hedgewars/uGearsRender.pas
changeset 8689 720bdd41154e
parent 8684 fd1f2bf5ffad
child 8733 b6002f1956d5
equal deleted inserted replaced
8688:88a6114a318c 8689:720bdd41154e
   105             sX:= -1;
   105             sX:= -1;
   106             dX:= -dX
   106             dX:= -dX
   107             end
   107             end
   108         else sX:= dX;
   108         else sX:= dX;
   109 
   109 
   110     if (dY > 0) then 
   110     if (dY > 0) then
   111         sY:= 1
   111         sY:= 1
   112     else
   112     else
   113         if (dY < 0) then
   113         if (dY < 0) then
   114             begin
   114             begin
   115             sY:= -1;
   115             sY:= -1;
   116             dY:= -dY
   116             dY:= -dY
   117             end
   117             end
   118         else 
   118         else
   119             sY:= dY;
   119             sY:= dY;
   120 
   120 
   121     if (dX > dY) then
   121     if (dX > dY) then
   122         d:= dX
   122         d:= dX
   123     else
   123     else
   252             defaultPos:= false;
   252             defaultPos:= false;
   253             if HH^.Effects[heFrozen] < 256 then
   253             if HH^.Effects[heFrozen] < 256 then
   254                  HatVisible:= true
   254                  HatVisible:= true
   255             else HatVisible:= false
   255             else HatVisible:= false
   256             end
   256             end
   257         else 
   257         else
   258             begin
   258             begin
   259             DrawHedgehog(sx, sy,
   259             DrawHedgehog(sx, sy,
   260                     sign,
   260                     sign,
   261                     2,
   261                     2,
   262                     4,
   262                     4,
   373                     end;
   373                     end;
   374                 end;
   374                 end;
   375             // draw crosshair
   375             // draw crosshair
   376             CrosshairX := Round(hwRound(Gear^.X) + dx * 80 + GetLaunchX(HH^.CurAmmoType, sign * m, Gear^.Angle));
   376             CrosshairX := Round(hwRound(Gear^.X) + dx * 80 + GetLaunchX(HH^.CurAmmoType, sign * m, Gear^.Angle));
   377             CrosshairY := Round(hwRound(Gear^.Y) + dy * 80 + GetLaunchY(HH^.CurAmmoType, Gear^.Angle));
   377             CrosshairY := Round(hwRound(Gear^.Y) + dy * 80 + GetLaunchY(HH^.CurAmmoType, Gear^.Angle));
   378  
   378 
   379             
   379 
   380             DrawTextureRotated(HH^.Team^.CrosshairTex,
   380             DrawTextureRotated(HH^.Team^.CrosshairTex,
   381                     12, 12, CrosshairX + WorldDx, CrosshairY + WorldDy, 0,
   381                     12, 12, CrosshairX + WorldDx, CrosshairY + WorldDy, 0,
   382                     sign * (Gear^.Angle * 180.0) / cMaxAngle);
   382                     sign * (Gear^.Angle * 180.0) / cMaxAngle);
   383             end;
   383             end;
   384         hx:= ox + 8 * sign;
   384         hx:= ox + 8 * sign;
   649                 amDrill: DrawSpriteRotated(sprHandDrill, hx, hy, sign, aangle);
   649                 amDrill: DrawSpriteRotated(sprHandDrill, hx, hy, sign, aangle);
   650                 amRope: DrawSpriteRotated(sprHandRope, hx, hy, sign, aangle);
   650                 amRope: DrawSpriteRotated(sprHandRope, hx, hy, sign, aangle);
   651                 amShotgun: DrawSpriteRotated(sprHandShotgun, hx, hy, sign, aangle);
   651                 amShotgun: DrawSpriteRotated(sprHandShotgun, hx, hy, sign, aangle);
   652                 amDEagle: DrawSpriteRotated(sprHandDEagle, hx, hy, sign, aangle);
   652                 amDEagle: DrawSpriteRotated(sprHandDEagle, hx, hy, sign, aangle);
   653                 amSineGun: DrawSpriteRotatedF(sprHandSinegun, hx, hy, 73 + (sign * LongInt(RealTicks div 73)) mod 8, sign, aangle);
   653                 amSineGun: DrawSpriteRotatedF(sprHandSinegun, hx, hy, 73 + (sign * LongInt(RealTicks div 73)) mod 8, sign, aangle);
   654                 
   654 
   655                 amPortalGun:
   655                 amPortalGun:
   656                     if (CurWeapon^.Timer and 2) <> 0 then // Add a new Hedgehog value instead of abusing timer?
   656                     if (CurWeapon^.Timer and 2) <> 0 then // Add a new Hedgehog value instead of abusing timer?
   657                         DrawSpriteRotatedF(sprPortalGun, hx, hy, 0, sign, aangle)
   657                         DrawSpriteRotatedF(sprPortalGun, hx, hy, 0, sign, aangle)
   658                     else
   658                     else
   659                         DrawSpriteRotatedF(sprPortalGun, hx, hy, 1+CurWeapon^.Pos, sign, aangle);
   659                         DrawSpriteRotatedF(sprPortalGun, hx, hy, 1+CurWeapon^.Pos, sign, aangle);
   660                         
   660 
   661                 amSniperRifle: DrawSpriteRotatedF(sprSniperRifle, hx, hy, 0, sign, aangle);
   661                 amSniperRifle: DrawSpriteRotatedF(sprSniperRifle, hx, hy, 0, sign, aangle);
   662                 amBlowTorch: DrawSpriteRotated(sprHandBlowTorch, hx, hy, sign, aangle);
   662                 amBlowTorch: DrawSpriteRotated(sprHandBlowTorch, hx, hy, sign, aangle);
   663                 amCake: DrawSpriteRotated(sprHandCake, hx, hy, sign, aangle);
   663                 amCake: DrawSpriteRotated(sprHandCake, hx, hy, sign, aangle);
   664                 amGrenade: DrawSpriteRotated(sprHandGrenade, hx, hy, sign, aangle);
   664                 amGrenade: DrawSpriteRotated(sprHandGrenade, hx, hy, sign, aangle);
   665                 amWatermelon: DrawSpriteRotated(sprHandMelon, hx, hy, sign, aangle);
   665                 amWatermelon: DrawSpriteRotated(sprHandMelon, hx, hy, sign, aangle);
   671                 amMine: DrawSpriteRotated(sprHandMine, hx, hy, sign, aangle);
   671                 amMine: DrawSpriteRotated(sprHandMine, hx, hy, sign, aangle);
   672                 amSMine: DrawSpriteRotated(sprHandSMine, hx, hy, sign, aangle);
   672                 amSMine: DrawSpriteRotated(sprHandSMine, hx, hy, sign, aangle);
   673                 amKnife: DrawSpriteRotatedF(sprHandKnife, hx, hy, 0, sign, aangle);
   673                 amKnife: DrawSpriteRotatedF(sprHandKnife, hx, hy, 0, sign, aangle);
   674                 amSeduction: begin
   674                 amSeduction: begin
   675                              DrawSpriteRotated(sprHandSeduction, hx, hy, sign, aangle);
   675                              DrawSpriteRotated(sprHandSeduction, hx, hy, sign, aangle);
   676                              DrawCircle(ox, oy, 248, 4, $FF, $00, $00, $AA); 
   676                              DrawCircle(ox, oy, 248, 4, $FF, $00, $00, $AA);
   677                              //Tint($FF, $0, $0, $AA);
   677                              //Tint($FF, $0, $0, $AA);
   678                              //DrawTexture(ox - 240, oy - 240, SpritesData[sprVampiric].Texture, 10);
   678                              //DrawTexture(ox - 240, oy - 240, SpritesData[sprVampiric].Texture, 10);
   679                              //Tint($FF, $FF, $FF, $FF);
   679                              //Tint($FF, $FF, $FF, $FF);
   680                              end;
   680                              end;
   681                 amVampiric: DrawSpriteRotatedF(sprHandVamp, hx, hy, (RealTicks div 125) mod 4, sign, aangle);
   681                 amVampiric: DrawSpriteRotatedF(sprHandVamp, hx, hy, (RealTicks div 125) mod 4, sign, aangle);
   948     if HH^.Effects[heFrozen] < 150000 then
   948     if HH^.Effects[heFrozen] < 150000 then
   949         begin
   949         begin
   950         if HH^.Effects[heFrozen] < 150000 then
   950         if HH^.Effects[heFrozen] < 150000 then
   951             Tint($FF, $FF, $FF, min(255,127+HH^.Effects[heFrozen] div 800));
   951             Tint($FF, $FF, $FF, min(255,127+HH^.Effects[heFrozen] div 800));
   952 
   952 
   953         iceOffset:= trunc(min(256,HH^.Effects[heFrozen]) / 256 * 64);
   953         iceOffset:= min(32, HH^.Effects[heFrozen] div 8);
   954         r.x := 128;
   954         r.x := 128;
   955         r.y := 128 - iceOffset;
   955         r.y := 96 - iceOffset;
   956         r.w := 64;
   956         r.w := 32;
   957         r.h := iceOffset;
   957         r.h := iceOffset;
   958         //DrawTextureFromRect(sx-32, sy-iceoffset+32, @r, SpritesData[sprFrozenHog].texture);
   958         if sign = -1 then
   959         DrawTextureFromRectDir(sx-16+sign*2, sy+48-iceoffset, r.w, r.h, @r, HHTexture, sign);
   959         DrawTextureFromRectDir(sx + sign*2, sy+16-iceoffset, r.w, r.h, @r, HHTexture, sign)
       
   960         else
       
   961         DrawTextureFromRectDir(sx-16 + sign*2, sy+16-iceoffset, r.w, r.h, @r, HHTexture, sign);
       
   962 
   960 
   963 
   961         if HH^.Effects[heFrozen] < 150000 then
   964         if HH^.Effects[heFrozen] < 150000 then
   962             Tint($FF, $FF, $FF, $FF);
   965             Tint($FF, $FF, $FF, $FF);
   963         end;
   966         end;
   964 
   967 
   983     startX, endX, startY, endY: LongInt;
   986     startX, endX, startY, endY: LongInt;
   984 begin
   987 begin
   985     if Gear^.Target.X <> NoPointX then
   988     if Gear^.Target.X <> NoPointX then
   986         if Gear^.AmmoType = amBee then
   989         if Gear^.AmmoType = amBee then
   987             DrawSpriteRotatedF(sprTargetBee, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360)
   990             DrawSpriteRotatedF(sprTargetBee, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360)
   988 	else if Gear^.AmmoType = amIceGun then
   991     else if Gear^.AmmoType = amIceGun then
   989 	    //DrawSprite(sprSnowDust, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8)
   992         //DrawSprite(sprSnowDust, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8)
   990         //DrawTextureRotatedF(SpritesData[sprSnowDust].Texture, 1, 0, 0, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8, 1, 22, 22, (RealTicks shr 3) mod 360)
   993         //DrawTextureRotatedF(SpritesData[sprSnowDust].Texture, 1, 0, 0, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8, 1, 22, 22, (RealTicks shr 3) mod 360)
   991         DrawTextureRotatedF(SpritesData[sprSnowDust].Texture, 1/(1+(RealTicks shr 8) mod 5), 0, 0, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8, 1, 22, 22, (RealTicks shr 3) mod 360)
   994         DrawTextureRotatedF(SpritesData[sprSnowDust].Texture, 1/(1+(RealTicks shr 8) mod 5), 0, 0, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8, 1, 22, 22, (RealTicks shr 3) mod 360)
   992     else
   995     else
   993         DrawSpriteRotatedF(sprTargetP, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360);
   996         DrawSpriteRotatedF(sprTargetP, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360);
   994 
   997 
   995     case Gear^.Kind of
   998     case Gear^.Kind of
   996           gtGrenade: DrawSpriteRotated(sprBomb, x, y, 0, Gear^.DirAngle);
   999           gtGrenade: DrawSpriteRotated(sprBomb, x, y, 0, Gear^.DirAngle);
   997       gtSnowball: DrawSpriteRotated(sprSnowball, x, y, 0, Gear^.DirAngle);
  1000       gtSnowball: DrawSpriteRotated(sprSnowball, x, y, 0, Gear^.DirAngle);
   998        gtGasBomb: DrawSpriteRotated(sprCheese, x, y, 0, Gear^.DirAngle);
  1001        gtGasBomb: DrawSpriteRotated(sprCheese, x, y, 0, Gear^.DirAngle);
   999                   
  1002 
  1000        gtMolotov: if (Gear^.State and gstDrowning) = 0 then
  1003        gtMolotov: if (Gear^.State and gstDrowning) = 0 then
  1001                        DrawSpriteRotatedF(sprMolotov, x, y, (RealTicks div 125) mod 8, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX))
  1004                        DrawSpriteRotatedF(sprMolotov, x, y, (RealTicks div 125) mod 8, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX))
  1002                   else DrawSprite(sprMolotov, x, y, 8);
  1005                   else DrawSprite(sprMolotov, x, y, 8);
  1003 
  1006 
  1004        gtRCPlane: begin
  1007        gtRCPlane: begin
  1038                         end
  1041                         end
  1039                     end;
  1042                     end;
  1040              gtBee: DrawSpriteRotatedF(sprBee, x, y, (GameTicks shr 5) mod 2, 0, DxDy2Angle(Gear^.dY, Gear^.dX));
  1043              gtBee: DrawSpriteRotatedF(sprBee, x, y, (GameTicks shr 5) mod 2, 0, DxDy2Angle(Gear^.dY, Gear^.dX));
  1041       gtPickHammer: DrawSprite(sprPHammer, x - 16, y - 50 + LongInt(((GameTicks shr 5) and 1) * 2), 0);
  1044       gtPickHammer: DrawSprite(sprPHammer, x - 16, y - 50 + LongInt(((GameTicks shr 5) and 1) * 2), 0);
  1042             gtRope: DrawRope(Gear);
  1045             gtRope: DrawRope(Gear);
  1043             
  1046 
  1044             gtMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then
  1047             gtMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then
  1045                            DrawSpriteRotated(sprMineOff, x, y, 0, Gear^.DirAngle)
  1048                            DrawSpriteRotated(sprMineOff, x, y, 0, Gear^.DirAngle)
  1046                        else if Gear^.Health <> 0 then
  1049                        else if Gear^.Health <> 0 then
  1047                            DrawSpriteRotated(sprMineOn, x, y, 0, Gear^.DirAngle)
  1050                            DrawSpriteRotated(sprMineOn, x, y, 0, Gear^.DirAngle)
  1048                        else DrawSpriteRotated(sprMineDead, x, y, 0, Gear^.DirAngle);
  1051                        else DrawSpriteRotated(sprMineDead, x, y, 0, Gear^.DirAngle);
  1049                        
  1052 
  1050            gtSMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then
  1053            gtSMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then
  1051                            DrawSpriteRotated(sprSMineOff, x, y, 0, Gear^.DirAngle)
  1054                            DrawSpriteRotated(sprSMineOff, x, y, 0, Gear^.DirAngle)
  1052                        else if Gear^.Health <> 0 then
  1055                        else if Gear^.Health <> 0 then
  1053                            DrawSpriteRotated(sprSMineOn, x, y, 0, Gear^.DirAngle)
  1056                            DrawSpriteRotated(sprSMineOn, x, y, 0, Gear^.DirAngle)
  1054                        else DrawSpriteRotated(sprMineDead, x, y, 0, Gear^.DirAngle);
  1057                        else DrawSpriteRotated(sprMineDead, x, y, 0, Gear^.DirAngle);
  1055            gtKnife: DrawSpriteRotatedF(sprKnife, x, y, 0, hwSign(Gear^.dX), Gear^.DirAngle);
  1058            gtKnife: DrawSpriteRotatedF(sprKnife, x, y, 0, hwSign(Gear^.dX), Gear^.DirAngle);
  1056                        
  1059 
  1057             gtCase: begin
  1060             gtCase: begin
  1058                     if Gear^.Timer > 1000 then
  1061                     if Gear^.Timer > 1000 then
  1059                         begin
  1062                         begin
  1060                         if ((Gear^.Pos and posCaseAmmo) <> 0) then
  1063                         if ((Gear^.Pos and posCaseAmmo) <> 0) then
  1061                             begin
  1064                             begin
  1135                      DrawSpriteRotatedF(sprCakeWalk, x, y, (GameTicks div 40) mod 6, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX) + 90)
  1138                      DrawSpriteRotatedF(sprCakeWalk, x, y, (GameTicks div 40) mod 6, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX) + 90)
  1136                   else
  1139                   else
  1137                      DrawSpriteRotatedF(sprCakeDown, x, y, 5 - Gear^.Pos, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX) + 90);
  1140                      DrawSpriteRotatedF(sprCakeDown, x, y, 5 - Gear^.Pos, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX) + 90);
  1138        gtSeduction: if Gear^.Pos >= 14 then
  1141        gtSeduction: if Gear^.Pos >= 14 then
  1139            DrawSprite(sprSeduction, x - 16, y - 16, 0);
  1142            DrawSprite(sprSeduction, x - 16, y - 16, 0);
  1140            
  1143 
  1141       gtWatermelon: DrawSpriteRotatedF(sprWatermelon, x, y, 0, 0, Gear^.DirAngle);
  1144       gtWatermelon: DrawSpriteRotatedF(sprWatermelon, x, y, 0, 0, Gear^.DirAngle);
  1142       gtMelonPiece: DrawSpriteRotatedF(sprWatermelon, x, y, 1, 0, Gear^.DirAngle);
  1145       gtMelonPiece: DrawSpriteRotatedF(sprWatermelon, x, y, 1, 0, Gear^.DirAngle);
  1143      gtHellishBomb: DrawSpriteRotated(sprHellishBomb, x, y, 0, Gear^.DirAngle);
  1146      gtHellishBomb: DrawSpriteRotated(sprHellishBomb, x, y, 0, Gear^.DirAngle);
  1144            gtBirdy: begin
  1147            gtBirdy: begin
  1145                     if Gear^.State and gstAnimation = gstAnimation then
  1148                     if Gear^.State and gstAnimation = gstAnimation then
  1203                     Tint($FF, $FF, $FF, $FF);
  1206                     Tint($FF, $FF, $FF, $FF);
  1204                     end;
  1207                     end;
  1205       gtNapalmBomb: DrawSpriteRotated(sprNapalmBomb, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX));
  1208       gtNapalmBomb: DrawSpriteRotated(sprNapalmBomb, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX));
  1206            gtFlake: if Gear^.State and (gstDrowning or gstTmpFlag) <> 0  then
  1209            gtFlake: if Gear^.State and (gstDrowning or gstTmpFlag) <> 0  then
  1207                         begin
  1210                         begin
  1208                         Tint((ExplosionBorderColor shr RShift) and $FF, 
  1211                         Tint((ExplosionBorderColor shr RShift) and $FF,
  1209                              (ExplosionBorderColor shr GShift) and $FF, 
  1212                              (ExplosionBorderColor shr GShift) and $FF,
  1210                              (ExplosionBorderColor shr BShift) and $FF, 
  1213                              (ExplosionBorderColor shr BShift) and $FF,
  1211                              $FF);
  1214                              $FF);
  1212                         // Needs a nicer white texture to tint
  1215                         // Needs a nicer white texture to tint
  1213                         DrawTextureRotatedF(SpritesData[sprSnowDust].Texture, 1, 0, 0, x, y, 0, 1, 8, 8, Gear^.DirAngle);
  1216                         DrawTextureRotatedF(SpritesData[sprSnowDust].Texture, 1, 0, 0, x, y, 0, 1, 8, 8, Gear^.DirAngle);
  1214                         //DrawSpriteRotated(sprSnowDust, x, y, 0, Gear^.DirAngle);
  1217                         //DrawSpriteRotated(sprSnowDust, x, y, 0, Gear^.DirAngle);
  1215                         //DrawTexture(x, y, SpritesData[sprVampiric].Texture, 0.1);
  1218                         //DrawTexture(x, y, SpritesData[sprVampiric].Texture, 0.1);
  1235        //gtStructure: DrawSprite(sprTarget, x - 16, y - 16, 0);
  1238        //gtStructure: DrawSprite(sprTarget, x - 16, y - 16, 0);
  1236           gtTardis: if Gear^.Pos <> 4 then
  1239           gtTardis: if Gear^.Pos <> 4 then
  1237                         begin
  1240                         begin
  1238                         if Gear^.Pos = 2 then
  1241                         if Gear^.Pos = 2 then
  1239                             Tint(Gear^.Hedgehog^.Team^.Clan^.Color shl 8 or $FF)
  1242                             Tint(Gear^.Hedgehog^.Team^.Clan^.Color shl 8 or $FF)
  1240                         else 
  1243                         else
  1241                             Tint(Gear^.Hedgehog^.Team^.Clan^.Color shl 8 or max($00, round(Gear^.Power * (1-abs(0.5 - (GameTicks mod 2000) / 2000)))));
  1244                             Tint(Gear^.Hedgehog^.Team^.Clan^.Color shl 8 or max($00, round(Gear^.Power * (1-abs(0.5 - (GameTicks mod 2000) / 2000)))));
  1242                         DrawSprite(sprTardis, x-24, y-63,0);
  1245                         DrawSprite(sprTardis, x-24, y-63,0);
  1243                         if Gear^.Pos = 2 then
  1246                         if Gear^.Pos = 2 then
  1244                             Tint($FF, $FF, $FF, $FF)
  1247                             Tint($FF, $FF, $FF, $FF)
  1245                         else
  1248                         else
  1277                                     begin
  1280                                     begin
  1278                                     DrawLine(Gear^.Target.X, Gear^.Target.Y, hwRound(HHGear^.X), hwRound(HHGear^.Y), 4.0, i, i, $FF, $40);
  1281                                     DrawLine(Gear^.Target.X, Gear^.Target.Y, hwRound(HHGear^.X), hwRound(HHGear^.Y), 4.0, i, i, $FF, $40);
  1279                                     end
  1282                                     end
  1280                                 else
  1283                                 else
  1281                                     begin
  1284                                     begin
  1282                                     DrawLine(hwRound(HHGear^.X), hwRound(HHGear^.Y), hwRound(Gear^.X), hwRound(Gear^.Y), 4.0, i, i, $FF, $40);                                    
  1285                                     DrawLine(hwRound(HHGear^.X), hwRound(HHGear^.Y), hwRound(Gear^.X), hwRound(Gear^.Y), 4.0, i, i, $FF, $40);
  1283                                     end;
  1286                                     end;
  1284                                 end
  1287                                 end
  1285                           end
  1288                           end
  1286                       end;
  1289                       end;
  1287             gtGenericFaller: DrawCircle(x, y, 3, 3, $FF, $00, $00, $FF);  // debug
  1290             gtGenericFaller: DrawCircle(x, y, 3, 3, $FF, $00, $00, $FF);  // debug