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