hedgewars/GSHandlers.inc
changeset 8993 839ce342474a
parent 8992 5b0be812dcdb
child 9026 f6074540bab2
equal deleted inserted replaced
8992:5b0be812dcdb 8993:839ce342474a
   496 
   496 
   497     if (Gear^.Kind = gtMelonPiece)
   497     if (Gear^.Kind = gtMelonPiece)
   498     or (Gear^.Kind = gtBall) then
   498     or (Gear^.Kind = gtBall) then
   499         CalcRotationDirAngle(Gear)
   499         CalcRotationDirAngle(Gear)
   500     else if (GameTicks and $1F) = 0 then
   500     else if (GameTicks and $1F) = 0 then
   501         AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace)
   501         begin
       
   502         if hwRound(Gear^.Y) > cWaterLine then
       
   503              AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble)
       
   504         else AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace)
       
   505         end
   502 end;
   506 end;
   503 
   507 
   504 ////////////////////////////////////////////////////////////////////////////////
   508 ////////////////////////////////////////////////////////////////////////////////
   505 procedure doStepShell(Gear: PGear);
   509 procedure doStepShell(Gear: PGear);
   506 begin
   510 begin
   513         doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound);
   517         doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound);
   514         DeleteGear(Gear);
   518         DeleteGear(Gear);
   515         exit
   519         exit
   516         end;
   520         end;
   517     if (GameTicks and $3F) = 0 then
   521     if (GameTicks and $3F) = 0 then
   518         AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace);
   522         begin
       
   523         if hwRound(Gear^.Y) > cWaterLine then
       
   524              AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble)
       
   525         else AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace)
       
   526         end
   519 end;
   527 end;
   520 
   528 
   521 ////////////////////////////////////////////////////////////////////////////////
   529 ////////////////////////////////////////////////////////////////////////////////
   522 procedure doStepSnowball(Gear: PGear);
   530 procedure doStepSnowball(Gear: PGear);
   523 var kick, i: LongInt;
   531 var kick, i: LongInt;
  2436         DeleteGear(Gear);
  2444         DeleteGear(Gear);
  2437         exit
  2445         exit
  2438         end;
  2446         end;
  2439 
  2447 
  2440     if (GameTicks and $3F) = 0 then
  2448     if (GameTicks and $3F) = 0 then
  2441         AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace)
  2449         begin
       
  2450         if hwRound(Gear^.Y) > cWaterLine then
       
  2451              AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble)
       
  2452         else AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace)
       
  2453         end
  2442 end;
  2454 end;
  2443 
  2455 
  2444 ////////////////////////////////////////////////////////////////////////////////
  2456 ////////////////////////////////////////////////////////////////////////////////
  2445 procedure doStepKamikazeWork(Gear: PGear);
  2457 procedure doStepKamikazeWork(Gear: PGear);
  2446 var
  2458 var
  2936     oldDy := Gear^.dY;
  2948     oldDy := Gear^.dY;
  2937 
  2949 
  2938     doStepFallingGear(Gear);
  2950     doStepFallingGear(Gear);
  2939 
  2951 
  2940     if (GameTicks and $3F) = 0 then
  2952     if (GameTicks and $3F) = 0 then
  2941         AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace);
  2953         begin
       
  2954         if hwRound(Gear^.Y) > cWaterLine then
       
  2955              AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble)
       
  2956         else AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace)
       
  2957         end;
  2942 
  2958 
  2943     if ((Gear^.State and gstCollision) <> 0) then
  2959     if ((Gear^.State and gstCollision) <> 0) then
  2944         begin
  2960         begin
  2945         //hit
  2961         //hit
  2946         Gear^.dX := oldDx;
  2962         Gear^.dX := oldDx;