hedgewars/uGears.pas
changeset 3689 e2be39ee19f0
parent 3682 45b416c5b976
child 3697 d5b30d6373fc
equal deleted inserted replaced
3687:f2d5bc20064a 3689:e2be39ee19f0
  1175 procedure doMakeExplosion(X, Y, Radius: LongInt; Mask, Tint: LongWord);
  1175 procedure doMakeExplosion(X, Y, Radius: LongInt; Mask, Tint: LongWord);
  1176 var Gear: PGear;
  1176 var Gear: PGear;
  1177     dmg, dmgRadius, dmgBase: LongInt;
  1177     dmg, dmgRadius, dmgBase: LongInt;
  1178     fX, fY: hwFloat;
  1178     fX, fY: hwFloat;
  1179     vg: PVisualGear;
  1179     vg: PVisualGear;
       
  1180     i, cnt: LongInt;
  1180 begin
  1181 begin
  1181 TargetPoint.X:= NoPointX;
  1182 TargetPoint.X:= NoPointX;
  1182 {$IFDEF DEBUGFILE}if Radius > 4 then AddFileLog('Explosion: at (' + inttostr(x) + ',' + inttostr(y) + ')');{$ENDIF}
  1183 {$IFDEF DEBUGFILE}if Radius > 4 then AddFileLog('Explosion: at (' + inttostr(x) + ',' + inttostr(y) + ')');{$ENDIF}
  1183 if Radius > 25 then KickFlakes(Radius, X, Y);
  1184 if Radius > 25 then KickFlakes(Radius, X, Y);
  1184 
  1185 
  1259         end;
  1260         end;
  1260     Gear:= Gear^.NextGear
  1261     Gear:= Gear^.NextGear
  1261     end;
  1262     end;
  1262 
  1263 
  1263 if (Mask and EXPLDontDraw) = 0 then
  1264 if (Mask and EXPLDontDraw) = 0 then
  1264     if (GameFlags and gfSolidLand) = 0 then DrawExplosion(X, Y, Radius);
  1265     if (GameFlags and gfSolidLand) = 0 then
       
  1266         begin
       
  1267         cnt:= DrawExplosion(X, Y, Radius) div 1608; // approx 2 16x16 circles to erase per chunk
       
  1268         if cnt > 0 then
       
  1269             for i:= 0 to cnt do
       
  1270                 AddVisualGear(X, Y, vgtChunk)
       
  1271         end;
  1265 
  1272 
  1266 uAIMisc.AwareOfExplosion(0, 0, 0)
  1273 uAIMisc.AwareOfExplosion(0, 0, 0)
  1267 end;
  1274 end;
  1268 
  1275 
  1269 procedure ShotgunShot(Gear: PGear);
  1276 procedure ShotgunShot(Gear: PGear);