513 end; |
513 end; |
514 |
514 |
515 procedure doStepTeamHealthSorterWork(Gear: PVisualGear; Steps: Longword); |
515 procedure doStepTeamHealthSorterWork(Gear: PVisualGear; Steps: Longword); |
516 var i, t, h: LongInt; |
516 var i, t, h: LongInt; |
517 begin |
517 begin |
518 for t:= 1 to min(Steps, Gear^.Timer) do |
518 if currsorter = Gear then |
|
519 for t:= 1 to min(Steps, Gear^.Timer) do |
519 begin |
520 begin |
520 dec(Gear^.Timer); |
521 dec(Gear^.Timer); |
521 if (Gear^.Timer and 15) = 0 then |
522 if (Gear^.Timer and 15) = 0 then |
522 for i:= 0 to Pred(TeamsCount) do |
523 for i:= 0 to Pred(TeamsCount) do |
523 with thexchar[i] do |
524 with thexchar[i] do |
870 end |
871 end |
871 end |
872 end |
872 end; |
873 end; |
873 |
874 |
874 //////////////////////////////////////////////////////////////////////////////// |
875 //////////////////////////////////////////////////////////////////////////////// |
|
876 var |
|
877 currwindbar: PVisualGear = nil; |
|
878 |
|
879 procedure doStepSmoothWindBarWork(Gear: PVisualGear; Steps: Longword); |
|
880 begin |
|
881 if currwindbar = Gear then |
|
882 begin |
|
883 inc(Gear^.Timer, Steps); |
|
884 |
|
885 while Gear^.Timer >= 10 do |
|
886 begin |
|
887 dec(Gear^.Timer, 10); |
|
888 if WindBarWidth < Gear^.Tag then |
|
889 inc(WindBarWidth) |
|
890 else if WindBarWidth > Gear^.Tag then |
|
891 dec(WindBarWidth); |
|
892 end; |
|
893 if cWindspeedf > Gear^.dAngle then |
|
894 begin |
|
895 cWindspeedf := cWindspeedf - Gear^.Angle*Steps; |
|
896 if cWindspeedf < Gear^.dAngle then cWindspeedf:= Gear^.dAngle; |
|
897 end |
|
898 else if cWindspeedf < Gear^.dAngle then |
|
899 begin |
|
900 cWindspeedf := cWindspeedf + Gear^.Angle*Steps; |
|
901 if cWindspeedf > Gear^.dAngle then cWindspeedf:= Gear^.dAngle; |
|
902 end; |
|
903 end; |
|
904 |
|
905 if ((WindBarWidth = Gear^.Tag) and (cWindspeedf = Gear^.dAngle)) or (currwindbar <> Gear) then |
|
906 begin |
|
907 if currwindbar = Gear then currwindbar:= nil; |
|
908 DeleteVisualGear(Gear) |
|
909 end |
|
910 end; |
|
911 |
875 procedure doStepSmoothWindBar(Gear: PVisualGear; Steps: Longword); |
912 procedure doStepSmoothWindBar(Gear: PVisualGear; Steps: Longword); |
876 begin |
913 begin |
877 inc(Gear^.Timer, Steps); |
914 currwindbar:= Gear; |
878 |
915 Gear^.doStep:= @doStepSmoothWindBarWork; |
879 while Gear^.Timer >= 10 do |
916 doStepSmoothWindBarWork(Gear, Steps) |
880 begin |
|
881 dec(Gear^.Timer, 10); |
|
882 if WindBarWidth < Gear^.Tag then |
|
883 inc(WindBarWidth) |
|
884 else if WindBarWidth > Gear^.Tag then |
|
885 dec(WindBarWidth); |
|
886 end; |
|
887 if cWindspeedf > Gear^.dAngle then |
|
888 begin |
|
889 cWindspeedf := cWindspeedf - Gear^.Angle*Steps; |
|
890 if cWindspeedf < Gear^.dAngle then cWindspeedf:= Gear^.dAngle; |
|
891 end |
|
892 else if cWindspeedf < Gear^.dAngle then |
|
893 begin |
|
894 cWindspeedf := cWindspeedf + Gear^.Angle*Steps; |
|
895 if cWindspeedf > Gear^.dAngle then cWindspeedf:= Gear^.dAngle; |
|
896 end; |
|
897 |
|
898 if (WindBarWidth = Gear^.Tag) and (cWindspeedf = Gear^.dAngle) then |
|
899 DeleteVisualGear(Gear) |
|
900 end; |
917 end; |
901 //////////////////////////////////////////////////////////////////////////////// |
918 //////////////////////////////////////////////////////////////////////////////// |
902 procedure doStepStraightShot(Gear: PVisualGear; Steps: Longword); |
919 procedure doStepStraightShot(Gear: PVisualGear; Steps: Longword); |
903 begin |
920 begin |
904 Gear^.X:= Gear^.X + Gear^.dX * Steps; |
921 Gear^.X:= Gear^.X + Gear^.dX * Steps; |