Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


#Actualrobert83a1

Posted 11 January 2013 - 01:25 AM

Hello,

Okay thank you , here it goes .

The part of the code that does the scrolling down :

procedure TMain.TestExecute(Sender: TObject);
var x,y : integer;
    new_line : boolean;
begin

  if Offset < Map.map_length-14 then    // -14 , Number of Tile Lines Drawn on Screen
    begin

    inc(Counter,1);         // I'm using this to check if I've scrolled down one tile Height (32), if I did
    if Counter = 32 then    // then I'm increasing Offset by 1 and reseting Counter to 0, Offset is used to tell the new line of sprites which Line of TileData
      begin                 // to read from the array
        Inc(offset,1);
        Counter:=0;
      end;


    for y:=0 to 15 do
      begin
        for x :=0 to 19 do
          begin
            BackGround[x,y].Y:=BackGround[x,y].Y-1;

            if BackGround[x,y].Y = -32 then
              begin
                BackGround[x,y].Dead;
                new_line := true;
              end;
            if new_line = true then
              begin
                BackGround[x,y]:= TBackGround.Create(SpriteEngine);
                Edit9.Text:=inttostr(offset);
                BackGround[x,y].ImageName:= Images.Item[map.Lines[offset+15,x].ImageIndex].Name;


                if BackGround[x,y].PatternCount = 1 then
                  begin
                    BackGround[x,y].DoAnimate:=false;
                  end
                else
                  begin
                      // this part should sync the animations, it does... but only for the newly created line, which is not in sync with the line before it
                      // after a few lines scrolling down I get a nice wave effect, due to the fact that each new line is created at a sligthly later time
                      // something here very wrong, I should somehow sync the new line with the previous line....
                      // ahol imageindex = imageindex elozorol
                       BackGround[x,y].AnimStart:=0;
                       BackGround[x,y].AnimCount:=map.Lines[offset+15,x].AnimCount;
                       BackGround[x,y].AnimSpeed:=map.Lines[offset+15,x].AnimSpeed;
                       BackGround[x,y].AnimPos:=(GlobalAnimCounter mod BackGround[x,y].AnimCount+map.Lines[offset+15,x].AnimStart);
                       BackGround[x,y].DoAnimate:=true;
                       BackGround[x,y].AnimLooped:=true;
                  end;

                BackGround[x,y].X:=x*32;
                BackGround[x,y].Y:=480;
                BackGround[x,y].Z:=1;
                new_line:=false;
              end;
          end;
      end;

  end;

end;

0..14 is visible on my screen , line 15 is the aditional line for smooth scrolling (using 640x480 resolution).

Problem is , newly created sprite line animation starts at different time then the rest, if you still download the exe and test the map I've included you'll see about the wave effect.
How can I set the newly created tile line to have the same animation start as the previous one?

Greetings
Robert

#3robert83a1

Posted 11 January 2013 - 01:24 AM

Hello,

Okay thank you , here it goes .

The part of the code that does the scrolling down :

procedure TMain.TestExecute(Sender: TObject);
var x,y : integer;
    new_line : boolean;
begin

  if Offset < Map.map_length-14 then    // -14 , Number of Tile Lines Drawn on Screen
    begin

    inc(Counter,1);         // I'm using this to check if I've scrolled down one tile Height (32), if I did
    if Counter = 32 then    // then I'm increasing Offset by 1 and reseting Counter to 0, Offset is used to tell the new line of sprites which Line of TileData
      begin                 // to read from the array
        Inc(offset,1);
        Counter:=0;
      end;


    for y:=0 to 15 do
      begin
        for x :=0 to 19 do
          begin
            BackGround[x,y].Y:=BackGround[x,y].Y-1;

            if BackGround[x,y].Y = -32 then
              begin
                BackGround[x,y].Dead;
                new_line := true;
              end;
            if new_line = true then
              begin
                BackGround[x,y]:= TBackGround.Create(SpriteEngine);
                Edit9.Text:=inttostr(offset);
                BackGround[x,y].ImageName:= Images.Item[map.Lines[offset+15,x].ImageIndex].Name;


                if BackGround[x,y].PatternCount = 1 then
                  begin
                    BackGround[x,y].DoAnimate:=false;
                  end
                else
                  begin
                      // this part should sync the animations, it does... but only for the newly created line, which is not in sync with the line before it
                      // after a few lines scrolling down I get a nice wave effect, due to the fact that each new line is created at a sligthly later time
                      // something here very wrong, I should somehow sync the new line with the previous line....
                      // ahol imageindex = imageindex elozorol
                       BackGround[x,y].AnimStart:=0;
                       BackGround[x,y].AnimCount:=map.Lines[offset+15,x].AnimCount;
                       BackGround[x,y].AnimSpeed:=map.Lines[offset+15,x].AnimSpeed;
                       BackGround[x,y].AnimPos:=(GlobalAnimCounter mod BackGround[x,y].AnimCount+map.Lines[offset+15,x].AnimStart);
                       BackGround[x,y].DoAnimate:=true;
                       BackGround[x,y].AnimLooped:=true;
                  end;

                BackGround[x,y].X:=x*32;
                BackGround[x,y].Y:=480;
                BackGround[x,y].Z:=1;
                new_line:=false;
              end;
          end;
      end;

  end;

end;

0..14 is visible on my screen , line 15 is the aditional line for smooth scrolling (using 640x480 resolution).

Problem is , newly created sprite line animation starts at different time then the rest, if you still download the exe and test the map I've included you'll see about the wave effect.
How can I set the newly created tile line to have the same animation start as the previous one?

Greetings
Robert

#2robert83a1

Posted 11 January 2013 - 01:24 AM

Hello,

Okay thank you , here it goes .

The part of the code that does the scrolling down :

procedure TMain.TestExecute(Sender: TObject);
var x,y : integer;
    new_line : boolean;
begin

  if Offset < Map.map_length-14 then    // -14 , Number of Tile Lines Drawn on Screen
    begin

    inc(Counter,1);         // I'm using this to check if I've scrolled down one tile Height (32), if I did
    if Counter = 32 then    // then I'm increasing Offset by 1 and reseting Counter to 0, Offset is used to tell the new line of sprites which Line of TileData
      begin                 // to read from the array
        Inc(offset,1);
        Counter:=0;
      end;


    for y:=0 to 15 do
      begin
        for x :=0 to 19 do
          begin
            BackGround[x,y].Y:=BackGround[x,y].Y-1;

            if BackGround[x,y].Y = -32 then
              begin
                BackGround[x,y].Dead;
                new_line := true;
              end;
            if new_line = true then
              begin
                BackGround[x,y]:= TBackGround.Create(SpriteEngine);
                Edit9.Text:=inttostr(offset);
                BackGround[x,y].ImageName:= Images.Item[map.Lines[offset+15,x].ImageIndex].Name;


                if BackGround[x,y].PatternCount = 1 then
                  begin
                    BackGround[x,y].DoAnimate:=false;
                  end
                else
                  begin
                      // this part should sync the animations, it does... but only for the newly created line, which is not in sync with the line before it
                      // after a few lines scrolling down I get a nice wave effect, due to the fact that each new line is created at a sligthly later time
                      // something here very wrong, I should somehow sync the new line with the previous line....
                      // ahol imageindex = imageindex elozorol
                       BackGround[x,y].AnimStart:=0;
                       BackGround[x,y].AnimCount:=map.Lines[offset+15,x].AnimCount;
                       BackGround[x,y].AnimSpeed:=map.Lines[offset+15,x].AnimSpeed;
                       BackGround[x,y].AnimPos:=(GlobalAnimCounter mod BackGround[x,y].AnimCount+map.Lines[offset+15,x].AnimStart);
                       BackGround[x,y].DoAnimate:=true;
                       BackGround[x,y].AnimLooped:=true;
                  end;

                BackGround[x,y].X:=x*32;
                BackGround[x,y].Y:=480;
                BackGround[x,y].Z:=1;
                new_line:=false;
              end;
          end;
      end;

  end;

end;

0..14 is visible on my screen , line 15 is the aditional line for smooth scrolling (using 640x480 resolution).

Problem is , newly created sprite line animation starts at different time then the rest, if you still download the exe and test the map I've included you'll see about the wave effect.
How can I set the newly created tile line to have the same animation start as the previous one?

Greetings
Robert

#1robert83a1

Posted 11 January 2013 - 01:23 AM

Hello,

 

 Okay thank you , here it goes .

 

 The part of the code that does the scrolling down :

 

 

 
procedure TMain.TestExecute(Sender: TObject);
var x,y : integer;
    new_line : boolean;
begin
  if Offset < Map.map_length-14 then    // -14 , Number of Tile Lines Drawn on Screen
    begin
    inc(Counter,1);         // I'm using this to check if I've scrolled down one tile Height (32), if I did
    if Counter = 32 then    // then I'm increasing Offset by 1 and reseting Counter to 0, Offset is used to tell the new line of sprites which Line of TileData
      begin                 // to read from the array
        Inc(offset,1);
        Counter:=0;
      end;

    for y:=0 to 15 do
      begin
        for x :=0 to 19 do
          begin
            BackGround[x,y].Y:=BackGround[x,y].Y-1;
            if BackGround[x,y].Y = -32 then
              begin
                BackGround[x,y].Dead;
                GlobalAnimCounter:=0;               new_line := true;
              end;
            if new_line = true then
              begin
                BackGround[x,y]:= TBackGround.Create(SpriteEngine);
                Edit9.Text:=inttostr(offset);
                BackGround[x,y].ImageName:= Images.Item[map.Lines[offset+15,x].ImageIndex].Name;

                if BackGround[x,y].PatternCount = 1 then
                  begin
                    BackGround[x,y].DoAnimate:=false;
                  end
                else
                  begin
                      // this part should sync the animations, it does... but only for the newly created line, which is not in sync with the line before it
                      // after a few lines scrolling down I get a nice wave effect, due to the fact that each new line is created at a sligthly later time
                      // something here very wrong, I should somehow sync the new line with the previous line....
                      // ahol imageindex = imageindex elozorol
                       BackGround[x,y].AnimStart:=0;
                       BackGround[x,y].AnimCount:=map.Lines[offset+15,x].AnimCount;
                       BackGround[x,y].AnimSpeed:=map.Lines[offset+15,x].AnimSpeed;
                       BackGround[x,y].AnimPos:=(GlobalAnimCounter mod BackGround[x,y].AnimCount+map.Lines[offset+15,x].AnimStart);
                       BackGround[x,y].DoAnimate:=true;
                       BackGround[x,y].AnimLooped:=true;
                  end;
                BackGround[x,y].X:=x*32;
                BackGround[x,y].Y:=480;
                BackGround[x,y].Z:=1;
                new_line:=false;
              end;
          end;
      end;
  end;
end;
 

 

0..14 is visible on my screen , line 15 is the aditional line for smooth scrolling (using 640x480 resolution).

 

Problem is , newly created sprite line animation starts at different time then the rest, if you still download the exe and test the map I've included you'll see about the wave effect.

How can I set the newly created tile line to have the same animation start as the previous one?

 

Greetings

 Robert


PARTNERS