hedgewars/uVisualGears.pas
changeset 4420 6be946bcd17a
parent 4390 f219628ed666
child 4422 5e8cfef25ccb
--- a/hedgewars/uVisualGears.pas	Wed Nov 24 20:36:46 2010 -0500
+++ b/hedgewars/uVisualGears.pas	Thu Nov 25 22:56:28 2010 -0500
@@ -25,7 +25,7 @@
 procedure initModule;
 procedure freeModule;
 
-function  AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord = 0): PVisualGear;
+function  AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord = 0; Critical: Boolean = false): PVisualGear;
 procedure ProcessVisualGears(Steps: Longword);
 procedure KickFlakes(Radius, X, Y: LongInt);
 procedure DrawVisualGears(Layer: LongWord);
@@ -92,22 +92,24 @@
             @doStepChunk,
             @doStepNote,
             @doStepLineTrail,
-            @doStepBulletHit
+            @doStepBulletHit,
+            @doStepCircle
         );
 
-function  AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord = 0): PVisualGear;
+function  AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord = 0; Critical: Boolean = false): PVisualGear;
 var gear: PVisualGear;
     t: Longword;
     sp: real;
 begin
 if (GameType = gmtSave) or (fastUntilLag and (GameType = gmtNet)) then // we are scrolling now
-    if Kind <> vgtCloud then
+    if (Kind <> vgtCloud) and not Critical then
         begin
         AddVisualGear:= nil;
         exit
         end;
 
 if ((cReducedQuality and rqFancyBoom) <> 0) and
+   not Critical and
    not (Kind in
    [vgtTeamHealthSorter,
     vgtSmallDamageTag,
@@ -466,6 +468,9 @@
             vgtSmallDamageTag: DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
             vgtSpeechBubble: if Gear^.Tex <> nil then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
             vgtHealthTag: if Gear^.Tex <> nil then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
+            vgtCircle: DrawCircle(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State, Gear^.Timer, 
+                      ((Gear^.Tint shr 24) and $FF), ((Gear^.Tint shr 16) and $FF), ((Gear^.Tint shr 8) and $FF), Gear^.Tint and $FF); 
+// Consider adding a version of DrawCircle that does not set Tint internally, and just call it here...
         end;
         Gear:= Gear^.NextGear
         end