hedgewars/uGearsHandlersMess.pas
changeset 10038 0a5e651d494c
parent 10011 ead5e4b21671
child 10040 4ac87acbaed9
equal deleted inserted replaced
10037:e8c7fe93f5dd 10038:0a5e651d494c
  3006     HHGear^.Message := HHGear^.Message and (not gmAttack);
  3006     HHGear^.Message := HHGear^.Message and (not gmAttack);
  3007     Gear^.CollisionMask:= lfNotCurrentMask;
  3007     Gear^.CollisionMask:= lfNotCurrentMask;
  3008 
  3008 
  3009     FollowGear := Gear;
  3009     FollowGear := Gear;
  3010 
  3010 
       
  3011     Gear^.dY:= cMaxWindSpeed * 100;
       
  3012 
  3011     Gear^.doStep := @doStepCakeFall
  3013     Gear^.doStep := @doStepCakeFall
  3012 end;
  3014 end;
  3013 
  3015 
  3014 ////////////////////////////////////////////////////////////////////////////////
  3016 ////////////////////////////////////////////////////////////////////////////////
  3015 procedure doStepSeductionWork(Gear: PGear);
  3017 procedure doStepSeductionWork(Gear: PGear);
  3188 end;
  3190 end;
  3189 
  3191 
  3190 procedure doStepDrill(Gear: PGear);
  3192 procedure doStepDrill(Gear: PGear);
  3191 var
  3193 var
  3192     t: PGearArray;
  3194     t: PGearArray;
  3193     oldDx, oldDy: hwFloat;
  3195     oldX, oldY, oldDx, oldDy: hwFloat;
  3194     t2: hwFloat;
  3196     t2: hwFloat;
  3195 begin
  3197 begin
  3196     AllInactive := false;
  3198     AllInactive := false;
  3197 
  3199 
  3198     if (Gear^.State and gsttmpFlag) = 0 then
  3200     if (Gear^.State and gsttmpFlag) = 0 then
  3199         Gear^.dX := Gear^.dX + cWindSpeed;
  3201         Gear^.dX := Gear^.dX + cWindSpeed;
  3200 
  3202 
  3201     oldDx := Gear^.dX;
  3203     oldDx := Gear^.dX;
  3202     oldDy := Gear^.dY;
  3204     oldDy := Gear^.dY;
       
  3205     oldX := Gear^.X;
       
  3206     oldY := Gear^.Y;
  3203 
  3207 
  3204     doStepFallingGear(Gear);
  3208     doStepFallingGear(Gear);
  3205 
  3209 
  3206     if (GameTicks and $3F) = 0 then
  3210     if (GameTicks and $3F) = 0 then
  3207         begin
  3211         begin
  3213     if ((Gear^.State and gstCollision) <> 0) then
  3217     if ((Gear^.State and gstCollision) <> 0) then
  3214         begin
  3218         begin
  3215         //hit
  3219         //hit
  3216         Gear^.dX := oldDx;
  3220         Gear^.dX := oldDx;
  3217         Gear^.dY := oldDy;
  3221         Gear^.dY := oldDy;
       
  3222         Gear^.X := oldX;
       
  3223         Gear^.Y := oldY;
  3218 
  3224 
  3219         if GameTicks > Gear^.FlightTime then
  3225         if GameTicks > Gear^.FlightTime then
  3220             t := CheckGearsCollision(Gear)
  3226             t := CheckGearsCollision(Gear)
  3221         else
  3227         else
  3222             t := nil;
  3228             t := nil;
  3237                 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound);
  3243                 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound);
  3238             DeleteGear(Gear);
  3244             DeleteGear(Gear);
  3239             exit;
  3245             exit;
  3240             end;
  3246             end;
  3241 
  3247 
       
  3248         Gear^.X:= Gear^.X+Gear^.dX*4;
       
  3249         Gear^.Y:= Gear^.Y+Gear^.dY*4;
  3242         Gear^.SoundChannel := LoopSound(sndDrillRocket);
  3250         Gear^.SoundChannel := LoopSound(sndDrillRocket);
  3243         Gear^.doStep := @doStepDrillDrilling;
  3251         Gear^.doStep := @doStepDrillDrilling;
  3244 
  3252 
  3245         if (Gear^.State and gsttmpFlag) <> 0 then
  3253         if (Gear^.State and gsttmpFlag) <> 0 then
  3246             gear^.RenderTimer:= true;
  3254             gear^.RenderTimer:= true;