--- 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;