hedgewars/uWorld.pas
changeset 80 3c3dc6a148ca
parent 79 29b477319854
child 82 2f4f3236cccc
equal deleted inserted replaced
79:29b477319854 80:3c3dc6a148ca
    81 procedure DrawWorld(Lag: integer; Surface: PSDL_Surface);
    81 procedure DrawWorld(Lag: integer; Surface: PSDL_Surface);
    82 var i, t: integer;
    82 var i, t: integer;
    83     r: TSDL_Rect;
    83     r: TSDL_Rect;
    84     team: PTeam;
    84     team: PTeam;
    85     tdx, tdy: real;
    85     tdx, tdy: real;
       
    86 
       
    87     procedure DrawRepeated(spr: TSprite);
       
    88     var i, w: integer;
       
    89     begin
       
    90     w:= SpritesData[spr].Width;
       
    91     i:= WorldDx mod w;
       
    92     if i > 0 then dec(i, w);
       
    93     repeat
       
    94       DrawSprite(spr, i, WorldDy + 1024 - SpritesData[spr].Height, 0, Surface);
       
    95       inc(i, w)
       
    96     until i > cScreenWidth
       
    97     end;
       
    98 
    86 begin
    99 begin
    87 // Sky
   100 // Sky
    88 inc(RealTicks, Lag);
   101 inc(RealTicks, Lag);
    89 r.h:= WorldDy;
   102 r.h:= WorldDy;
    90 if r.h > 0 then
   103 if r.h > 0 then
    94    r.y:= 0;
   107    r.y:= 0;
    95    r.w:= cScreenWidth;
   108    r.w:= cScreenWidth;
    96    SDL_FillRect(Surface, @r, cSkyColor)
   109    SDL_FillRect(Surface, @r, cSkyColor)
    97    end;
   110    end;
    98 // background
   111 // background
    99 for i:= 0 to (cScreenWidth shr 6) do
   112 DrawRepeated(sprSky);
   100     DrawGear(sSky, i*64, WorldDy, Surface);
   113 DrawRepeated(sprHorizont);
   101 
       
   102 for i:= -1 to 3 do
       
   103     DrawGear(sHorizont, i * 512 + (((WorldDx * 3) div 5) and $1FF), cWaterLine - 256 + WorldDy, Surface);
       
   104 
   114 
   105 // Waves
   115 // Waves
   106 {$WARNINGS OFF}
   116 {$WARNINGS OFF}
   107 for i:= -1 to cWaterSprCount do DrawSprite(sprWater,  i * 256  + ((WorldDx + (RealTicks shr 6)      ) and $FF), cWaterLine + WorldDy - 64, 0, Surface);
   117 for i:= -1 to cWaterSprCount do DrawSprite(sprWater,  i * 256  + ((WorldDx + (RealTicks shr 6)      ) and $FF), cWaterLine + WorldDy - 64, 0, Surface);
   108 for i:= -1 to cWaterSprCount do DrawSprite(sprWater,  i * 256  + ((WorldDx - (RealTicks shr 6) + 192) and $FF), cWaterLine + WorldDy - 48, 0, Surface);
   118 for i:= -1 to cWaterSprCount do DrawSprite(sprWater,  i * 256  + ((WorldDx - (RealTicks shr 6) + 192) and $FF), cWaterLine + WorldDy - 48, 0, Surface);