73 |
73 |
74 function isSorterActive: boolean; inline; |
74 function isSorterActive: boolean; inline; |
75 procedure initModule; |
75 procedure initModule; |
76 |
76 |
77 implementation |
77 implementation |
78 uses uVariables, Math, uConsts, uVisualGearsList, uFloat, uSound, uRenderUtils, uWorld; |
78 uses uCollisions, uVariables, Math, uConsts, uVisualGearsList, uFloat, uSound, uRenderUtils, uWorld; |
79 |
79 |
80 procedure doStepFlake(Gear: PVisualGear; Steps: Longword); |
80 procedure doStepFlake(Gear: PVisualGear; Steps: Longword); |
81 var sign: real; |
81 var sign: real; |
82 moved: boolean; |
82 moved: boolean; |
83 begin |
83 begin |
343 Gear^.Y:= Gear^.Y + Gear^.dY * Steps; |
343 Gear^.Y:= Gear^.Y + Gear^.dY * Steps; |
344 Gear^.Y:= Gear^.Y - cDrownSpeedf * Steps; |
344 Gear^.Y:= Gear^.Y - cDrownSpeedf * Steps; |
345 Gear^.dX := Gear^.dX / (1.001 * Steps); |
345 Gear^.dX := Gear^.dX / (1.001 * Steps); |
346 Gear^.dY := Gear^.dY / (1.001 * Steps); |
346 Gear^.dY := Gear^.dY / (1.001 * Steps); |
347 |
347 |
348 if (Gear^.FrameTicks <= Steps) or (round(Gear^.Y) < cWaterLine) then |
348 if (Gear^.FrameTicks <= Steps) or not CheckCoordInWater(round(Gear^.X), round(Gear^.Y)) then |
349 DeleteVisualGear(Gear) |
349 DeleteVisualGear(Gear) |
350 else |
350 else |
351 dec(Gear^.FrameTicks, Steps) |
351 dec(Gear^.FrameTicks, Steps) |
352 end; |
352 end; |
353 |
353 |
354 //////////////////////////////////////////////////////////////////////////////// |
354 //////////////////////////////////////////////////////////////////////////////// |
355 procedure doStepSteam(Gear: PVisualGear; Steps: Longword); |
355 procedure doStepSteam(Gear: PVisualGear; Steps: Longword); |
356 begin |
356 begin |
357 Gear^.X:= Gear^.X + (cWindSpeedf * 100 + Gear^.dX) * Steps; |
357 if ((cWindSpeedf > 0) and ( leftX > Gear^.X)) |
|
358 or ((cWindSpeedf < 0) and (rightX < Gear^.X)) then |
|
359 Gear^.X:= Gear^.X + (cWindSpeedf * 100 + Gear^.dX) * Steps; |
358 Gear^.Y:= Gear^.Y - cDrownSpeedf * Steps; |
360 Gear^.Y:= Gear^.Y - cDrownSpeedf * Steps; |
359 |
361 |
360 if Gear^.FrameTicks <= Steps then |
362 if Gear^.FrameTicks <= Steps then |
361 if Gear^.Frame = 0 then |
363 if Gear^.Frame = 0 then |
362 DeleteVisualGear(Gear) |
364 DeleteVisualGear(Gear) |