hedgewars/uStore.pas
changeset 53 0e27949850e3
parent 49 3afe33c1cf06
child 54 839fd258ae6f
--- a/hedgewars/uStore.pas	Sun Jan 15 23:56:47 2006 +0000
+++ b/hedgewars/uStore.pas	Thu Jan 19 21:12:20 2006 +0000
@@ -65,7 +65,7 @@
  SDLPrimSurface: PSDL_Surface;
 
 implementation
-uses uMisc, uIO, uConsole, uLand;
+uses uMisc, uIO, uConsole, uLand, uCollisions;
 
 var StoreSurface,
      TempSurface,
@@ -74,9 +74,7 @@
 procedure DrawExplosion(X, Y, Radius: integer);
 var ty, tx, p: integer;
 begin
-for ty:= max(-Radius, -y) to min(radius, 1023 - y) do
-    for tx:= max(0, round(x-radius*sqrt(1-sqr(ty/radius)))) to min(2047, round(x+radius*sqrt(1-sqr(ty/radius)))) do
-        Land[ty + y, tx]:= 0;
+FillRoundInLand(X, Y, Radius, 0);
 
 if SDL_MustLock(LandSurface) then
    SDLTry(SDL_LockSurface(LandSurface) >= 0, true);
@@ -105,11 +103,11 @@
      1: ;// not supported
      2: for ty:= max(-Radius, -y) to min(Radius, 1023 - y) do
             for tx:= max(0, round(x-radius*sqrt(1-sqr(ty/radius)))) to min(2047, round(x+radius*sqrt(1-sqr(ty/radius)))) do
-               if Land[y + ty, tx] <> 0 then
+               if Land[y + ty, tx] = $FFFFFF then
                   PWord(p + LandSurface.pitch*(y + ty) + tx * 2)^:= cExplosionBorderColor;
      3: for ty:= max(-Radius, -y) to min(Radius, 1023 - y) do
             for tx:= max(0, round(x-radius*sqrt(1-sqr(ty/radius)))) to min(2047, round(x+radius*sqrt(1-sqr(ty/radius)))) do
-               if Land[y + ty, tx] <> 0 then
+               if Land[y + ty, tx] = $FFFFFF then
                 begin
                 PByte(p + LandSurface.pitch*(y + ty) + tx * 3 + 0)^:= cExplosionBorderColor and $FF;
                 PByte(p + LandSurface.pitch*(y + ty) + tx * 3 + 1)^:= (cExplosionBorderColor shr 8) and $FF;
@@ -117,7 +115,7 @@
                 end;
      4: for ty:= max(-Radius, -y) to min(Radius, 1023 - y) do
             for tx:= max(0, round(x-radius*sqrt(1-sqr(ty/radius)))) to min(2047, round(x+radius*sqrt(1-sqr(ty/radius)))) do
-               if Land[y + ty, tx] <> 0 then
+               if Land[y + ty, tx] = $FFFFFF then
                    PLongword(p + LandSurface.pitch*(y + ty) + tx * 4)^:= cExplosionBorderColor;
      end;
 
@@ -164,11 +162,11 @@
      1: ;
      2: for ty:= max(-Radius, -y) to min(Radius, 1023 - y) do
             for tx:= max(0, round(ar[i].Left - radius*sqrt(1-sqr(ty/radius)))) to min(2047, round(ar[i].Right + radius*sqrt(1-sqr(ty/radius)))) do
-               if Land[y + ty, tx] <> 0 then
+               if Land[y + ty, tx] = $FFFFFF then
                   PWord(p + LandSurface.pitch*(y + ty) + tx * 2)^:= cExplosionBorderColor;
      3: for ty:= max(-Radius, -y) to min(Radius, 1023 - y) do
             for tx:= max(0, round(ar[i].Left - radius*sqrt(1-sqr(ty/radius)))) to min(2047, round(ar[i].Right + radius*sqrt(1-sqr(ty/radius)))) do
-               if Land[y + ty, tx] <> 0 then
+               if Land[y + ty, tx] = $FFFFFF then
                 begin
                 PByte(p + LandSurface.pitch*(y + ty) + tx * 3 + 0)^:= cExplosionBorderColor and $FF;
                 PByte(p + LandSurface.pitch*(y + ty) + tx * 3 + 1)^:= (cExplosionBorderColor shr 8) and $FF;
@@ -176,7 +174,7 @@
                 end;
      4: for ty:= max(-Radius, -y) to min(Radius, 1023 - y) do
             for tx:= max(0, round(ar[i].Left - radius*sqrt(1-sqr(ty/radius)))) to min(2047, round(ar[i].Right + radius*sqrt(1-sqr(ty/radius)))) do
-               if Land[y + ty, tx] <> 0 then
+               if Land[y + ty, tx] = $FFFFFF then
                    PLongword(p + LandSurface.pitch*(y + ty) + tx * 4)^:= cExplosionBorderColor;
      end;
     inc(y, dY)
@@ -386,7 +384,7 @@
     r.y:= 256;
     r.w:= 16;
     r.h:= 16;
-    s:= Pathz[ptGraphics] + cCHFileName;
+    s:= Pathz[ptGraphics] + '/' + cCHFileName;
     WriteToConsole(msgLoading + s + ' ');
     tmpsurf:= IMG_Load(PChar(s));
     TryDo(tmpsurf <> nil, msgFailed, true);
@@ -436,7 +434,7 @@
           begin
           dec(l, 32);
           if p.GraveName = '' then p.GraveName:= 'Simple';
-          LoadToSurface(Pathz[ptGraves] + p.GraveName + '.png', StoreSurface, l, 512);
+          LoadToSurface(Pathz[ptGraves] + '/' + p.GraveName + '.png', StoreSurface, l, 512);
           p.GraveRect.x:= l;
           p.GraveRect.y:= 512;
           p.GraveRect.w:= 32;
@@ -465,7 +463,7 @@
     var f: textfile;
         c: integer;
     begin
-    s:= Pathz[ptThemeCurrent] + cThemeCFGFilename;
+    s:= Pathz[ptThemeCurrent] + '/' + cThemeCFGFilename;
     WriteToConsole(msgLoading + s + ' ');
     AssignFile(f, s);
     {$I-}
@@ -490,16 +488,14 @@
 for fi:= Low(THWFont) to High(THWFont) do
     with Fontz[fi] do
          begin
-         s:= Pathz[ptFonts] + Name;
+         s:= Pathz[ptFonts] + '/' + Name;
          WriteToConsole(msgLoading + s + ' ');
          Handle:= TTF_OpenFont(PChar(s), Height);
          TryDo(Handle <> nil, msgFailed, true);
          WriteLnToConsole(msgOK)
          end;
 AddProgress;
-//s:= Pathz[ptMapCurrent] + cLandFileName;
-//WriteToConsole(msgLoading + s + ' ');         
-//tmpsurf:= IMG_Load(PChar(s));
+
 tmpsurf:= LandSurface;
 TryDo(tmpsurf <> nil, msgFailed, true);
 if cFullScreen then
@@ -514,7 +510,7 @@
 
 AddProgress;
 for i:= Low(TStuff) to High(TStuff) do
-    LoadToSurface(Pathz[StuffLoadData[i].Path] + StuffLoadData[i].FileName, StoreSurface, StuffPoz[i].x, StuffPoz[i].y);
+    LoadToSurface(Pathz[StuffLoadData[i].Path] + '/' + StuffLoadData[i].FileName, StoreSurface, StuffPoz[i].x, StuffPoz[i].y);
 
 AddProgress;
 WriteNames(fnt16);
@@ -526,10 +522,10 @@
 AddProgress;
 for ii:= Low(TSprite) to High(TSprite) do
     with SpritesData[ii] do
-         Surface:= LoadImage(Pathz[Path] + FileName, hasAlpha);
+         Surface:= LoadImage(Pathz[Path] + '/' + FileName, hasAlpha);
 
 AddProgress;
-tmpsurf:= LoadImage(Pathz[ptGraphics] + cHHFileName, false);
+tmpsurf:= LoadImage(Pathz[ptGraphics] + '/' + cHHFileName, false);
 TryDo(SDL_SetColorKey(tmpsurf, SDL_SRCCOLORKEY or SDL_RLEACCEL, 0) = 0, errmsgTransparentSet, true);
 HHSurface:= SDL_DisplayFormat(tmpsurf);
 SDL_FreeSurface(tmpsurf);