hedgewars/uVisualGears.pas
changeset 15908 014f4edd0421
parent 15795 da1bb21e6fbf
--- a/hedgewars/uVisualGears.pas	Thu Oct 06 20:58:54 2022 +0300
+++ b/hedgewars/uVisualGears.pas	Sun Oct 16 13:14:16 2022 +0300
@@ -138,6 +138,18 @@
     exit(@SpritesData[GetSprite(sprite, SDsprite)]);
 end;
 
+procedure DrawCircleGear(gear : PVisualGear);
+var tmp: real;
+begin
+   if gear^.Angle = 1 then
+   begin
+      tmp:= Gear^.State / 100;
+      DrawTexture(round(Gear^.X-24*tmp) + WorldDx, round(Gear^.Y-24*tmp) + WorldDy, SpritesData[sprVampiric].Texture, tmp)
+   end
+   else
+      DrawCircle(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State, Gear^.Timer);
+end;
+
 procedure DrawVisualGears(Layer: LongWord; worldIsShifted: boolean);
 var Gear: PVisualGear;
     tinted, speedlessFlakes: boolean;
@@ -208,6 +220,8 @@
               vgtEvilTrace: if Gear^.State < 8 then
                   DrawSprite(sprEvilTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State);
               vgtLineTrail: DrawLine(Gear^.X, Gear^.Y, Gear^.dX, Gear^.dY, 1.0, $FF, min(Gear^.Timer, $C0), min(Gear^.Timer, $80), min(Gear^.Timer, (Gear^.Tint and $FF)));
+              vgtLine: DrawLine(Gear^.X, Gear^.Y, Gear^.dX, Gear^.dY, Gear^.State, Gear^.Tint);
+              vgtCircle: DrawCircleGear(gear);
           end;
           if (cReducedQuality and rqAntiBoom) = 0 then
               case Gear^.Kind of
@@ -377,13 +391,7 @@
                              else
                                  DrawTextureRotatedF(spriteData^.Texture, Gear^.Scale, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, spriteData^.Width, spriteData^.Height, Gear^.Angle);
                              end;
-               vgtCircle: if gear^.Angle = 1 then
-                              begin
-                              tmp:= Gear^.State / 100;
-                              DrawTexture(round(Gear^.X-24*tmp) + WorldDx, round(Gear^.Y-24*tmp) + WorldDy, SpritesData[sprVampiric].Texture, tmp)
-                              end
-                          else
-                              DrawCircle(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State, Gear^.Timer);
+              vgtCircle: DrawCircleGear(gear);
            end;
            if (Gear^.Tint <> $FFFFFFFF) or tinted then
                untint;