hedgewars/uVisualGearsHandlers.pas
branchqmlfrontend
changeset 10886 99273b7afbff
parent 10859 d7e3abe3d5c2
child 11046 47a8c19ecb60
equal deleted inserted replaced
10823:1ff3dd3705b1 10886:99273b7afbff
   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;