hedgewars/uVisualGears.pas
changeset 3689 e2be39ee19f0
parent 3641 98319a621dc8
child 3697 d5b30d6373fc
--- a/hedgewars/uVisualGears.pas	Fri Jul 30 12:07:30 2010 -0400
+++ b/hedgewars/uVisualGears.pas	Fri Jul 30 18:20:42 2010 +0200
@@ -115,7 +115,8 @@
             @doStepSmokeTrace,
             @doStepSmokeTrace,
             @doStepExplosion,
-            @doStepBigExplosion
+            @doStepBigExplosion,
+            @doStepChunk
         );
 
 function  AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord = 0): PVisualGear;
@@ -299,6 +300,15 @@
 vgtBigExplosion: begin
                 gear^.Angle:= random(360);
                 end;
+      vgtChunk: begin
+                gear^.Frame:= random(4);
+                t:= random(1024);
+                sp:= 0.001 * (random(85) + 47);
+                dx:= AngleSin(t).QWordValue/4294967296 * sp;
+                dy:= AngleCos(t).QWordValue/4294967296 * sp;
+                if random(2) = 0 then dx := -dx;
+                (*if random(2) = 0 then*) dy := -2 * dy;
+                end;
         end;
 
 if State <> 0 then gear^.State:= State;
@@ -455,6 +465,7 @@
                             Tint($FF, $FF, $FF, floor(Gear^.alpha * $FF));
                             DrawRotatedTextureF(SpritesData[sprSmokeRing].Texture, Gear^.scale, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 0, 1, 200, 200, Gear^.Angle);
                             end;
+                vgtChunk: DrawRotatedF(sprChunk, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle);
             end;
         case Gear^.Kind of
             vgtSmallDamageTag: DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);