hedgewars/GSHandlers.inc
changeset 374 95169697cc38
parent 371 731ad6d27bd1
child 393 db01cc79f278
equal deleted inserted replaced
373:df912aab6b7e 374:95169697cc38
   218 end;
   218 end;
   219 
   219 
   220 ////////////////////////////////////////////////////////////////////////////////
   220 ////////////////////////////////////////////////////////////////////////////////
   221 procedure doStepUFOWork(Gear: PGear);
   221 procedure doStepUFOWork(Gear: PGear);
   222 var t: hwFloat;
   222 var t: hwFloat;
       
   223     y: LongInt;
   223 begin
   224 begin
   224 AllInactive:= false;
   225 AllInactive:= false;
   225 t:= Distance(Gear^.dX, Gear^.dY);
   226 t:= Distance(Gear^.dX, Gear^.dY);
   226 Gear^.dX:= Gear^.Elasticity * (Gear^.dX + _0_000004 * (TargetPoint.X - hwRound(Gear^.X)));
   227 Gear^.dX:= Gear^.Elasticity * (Gear^.dX + _0_000004 * (TargetPoint.X - hwRound(Gear^.X)));
   227 Gear^.dY:= Gear^.Elasticity * (Gear^.dY + _0_000004 * (TargetPoint.Y - hwRound(Gear^.Y)));
   228 Gear^.dY:= Gear^.Elasticity * (Gear^.dY + _0_000004 * (TargetPoint.Y - hwRound(Gear^.Y)));
   228 t:= t / Distance(Gear^.dX, Gear^.dY);
   229 t:= t / Distance(Gear^.dX, Gear^.dY);
   229 Gear^.dX:= Gear^.dX * t;
   230 Gear^.dX:= Gear^.dX * t;
   230 Gear^.dY:= Gear^.dY * t;
   231 Gear^.dY:= Gear^.dY * t;
   231 Gear^.X:= Gear^.X + Gear^.dX;
   232 Gear^.X:= Gear^.X + Gear^.dX;
   232 Gear^.Y:= Gear^.Y + Gear^.dY;
   233 Gear^.Y:= Gear^.Y + Gear^.dY;
       
   234 
       
   235 if (GameTicks and $3F) = 0 then
       
   236    begin
       
   237    y:= hwRound(Gear^.Y);
       
   238    if y + Gear^.Radius < cWaterLine then
       
   239       AddGear(hwRound(Gear^.X), y, gtSmokeTrace, 0, 0, 0, 0);
       
   240    end;
       
   241 
   233 CheckCollision(Gear);
   242 CheckCollision(Gear);
   234 dec(Gear^.Timer);
   243 dec(Gear^.Timer);
   235 if ((Gear^.State and gstCollision) <> 0) or (Gear^.Timer = 0) then
   244 if ((Gear^.State and gstCollision) <> 0) or (Gear^.Timer = 0) then
   236    begin
   245    begin
   237    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
   246    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);