hedgewars/uVisualGears.pas
changeset 3689 e2be39ee19f0
parent 3641 98319a621dc8
child 3697 d5b30d6373fc
equal deleted inserted replaced
3687:f2d5bc20064a 3689:e2be39ee19f0
   113             @doStepFeather,
   113             @doStepFeather,
   114             @doStepHealthTag,
   114             @doStepHealthTag,
   115             @doStepSmokeTrace,
   115             @doStepSmokeTrace,
   116             @doStepSmokeTrace,
   116             @doStepSmokeTrace,
   117             @doStepExplosion,
   117             @doStepExplosion,
   118             @doStepBigExplosion
   118             @doStepBigExplosion,
       
   119             @doStepChunk
   119         );
   120         );
   120 
   121 
   121 function  AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord = 0): PVisualGear;
   122 function  AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord = 0): PVisualGear;
   122 var gear: PVisualGear;
   123 var gear: PVisualGear;
   123     t: Longword;
   124     t: Longword;
   296                 gear^.State:= 8;
   297                 gear^.State:= 8;
   297                 //gear^.Z:= cSmokeZ
   298                 //gear^.Z:= cSmokeZ
   298                 end;
   299                 end;
   299 vgtBigExplosion: begin
   300 vgtBigExplosion: begin
   300                 gear^.Angle:= random(360);
   301                 gear^.Angle:= random(360);
       
   302                 end;
       
   303       vgtChunk: begin
       
   304                 gear^.Frame:= random(4);
       
   305                 t:= random(1024);
       
   306                 sp:= 0.001 * (random(85) + 47);
       
   307                 dx:= AngleSin(t).QWordValue/4294967296 * sp;
       
   308                 dy:= AngleCos(t).QWordValue/4294967296 * sp;
       
   309                 if random(2) = 0 then dx := -dx;
       
   310                 (*if random(2) = 0 then*) dy := -2 * dy;
   301                 end;
   311                 end;
   302         end;
   312         end;
   303 
   313 
   304 if State <> 0 then gear^.State:= State;
   314 if State <> 0 then gear^.State:= State;
   305 
   315 
   453                             end;
   463                             end;
   454                 vgtSmokeRing: begin
   464                 vgtSmokeRing: begin
   455                             Tint($FF, $FF, $FF, floor(Gear^.alpha * $FF));
   465                             Tint($FF, $FF, $FF, floor(Gear^.alpha * $FF));
   456                             DrawRotatedTextureF(SpritesData[sprSmokeRing].Texture, Gear^.scale, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 0, 1, 200, 200, Gear^.Angle);
   466                             DrawRotatedTextureF(SpritesData[sprSmokeRing].Texture, Gear^.scale, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 0, 1, 200, 200, Gear^.Angle);
   457                             end;
   467                             end;
       
   468                 vgtChunk: DrawRotatedF(sprChunk, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle);
   458             end;
   469             end;
   459         case Gear^.Kind of
   470         case Gear^.Kind of
   460             vgtSmallDamageTag: DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
   471             vgtSmallDamageTag: DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
   461             vgtSpeechBubble: if Gear^.Tex <> nil then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
   472             vgtSpeechBubble: if Gear^.Tex <> nil then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
   462             vgtHealthTag: if Gear^.Tex <> nil then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
   473             vgtHealthTag: if Gear^.Tex <> nil then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);