hedgewars/uVisualGears.pas
branchios-develop
changeset 13413 ba39a1d396c0
parent 13329 e8801220c13f
child 13633 35d93b1e7fef
equal deleted inserted replaced
13411:6e8b807bda4b 13413:ba39a1d396c0
   204                         end;
   204                         end;
   205               vgtSmokeTrace: if Gear^.State < 8 then
   205               vgtSmokeTrace: if Gear^.State < 8 then
   206                   DrawSprite(sprSmokeTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State);
   206                   DrawSprite(sprSmokeTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State);
   207               vgtEvilTrace: if Gear^.State < 8 then
   207               vgtEvilTrace: if Gear^.State < 8 then
   208                   DrawSprite(sprEvilTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State);
   208                   DrawSprite(sprEvilTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State);
   209               vgtLineTrail: DrawLine(Gear^.X, Gear^.Y, Gear^.dX, Gear^.dY, 1.0, $FF, min(Gear^.Timer, $C0), min(Gear^.Timer, $80), min(Gear^.Timer, $FF));
   209               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)));
   210           end;
   210           end;
   211           if (cReducedQuality and rqAntiBoom) = 0 then
   211           if (cReducedQuality and rqAntiBoom) = 0 then
   212               case Gear^.Kind of
   212               case Gear^.Kind of
   213                   vgtSmoke: DrawTextureF(SpritesData[sprSmoke].Texture, Gear^.scale, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 7 - Gear^.Frame, 1, SpritesData[sprSmoke].Width, SpritesData[sprSmoke].Height);
   213                   vgtSmoke: DrawTextureF(SpritesData[sprSmoke].Texture, Gear^.scale, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 7 - Gear^.Frame, 1, SpritesData[sprSmoke].Width, SpritesData[sprSmoke].Height);
   214                   vgtSmokeWhite: DrawSprite(sprSmokeWhite, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
   214                   vgtSmokeWhite: DrawSprite(sprSmokeWhite, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
   262                         if speedlessFlakes then
   262                         if speedlessFlakes then
   263                             DrawSprite(sprite, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame)
   263                             DrawSprite(sprite, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame)
   264                         else
   264                         else
   265                             DrawSpriteRotatedF(sprite, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle)
   265                             DrawSpriteRotatedF(sprite, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle)
   266                         end;*)
   266                         end;*)
   267                vgtSpeechBubble: begin
   267                vgtSpeechBubble: if (Gear^.Angle <> 0) then
   268                                 if (Gear^.Tex <> nil) and (((Gear^.State = 0) and (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Team <> CurrentTeam)) or (Gear^.State = 1)) then
   268                                 // ^ Before this gear renders, Angle must be set to mark it ready (e.g. coordinates properly initialized)
   269                                     begin
   269                                     if (Gear^.Tex <> nil) and (((Gear^.State = 0) and (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Team <> CurrentTeam)) or (Gear^.State = 1)) then
   270                                     tinted:= true;
   270                                         begin
   271                                     Tint($FF, $FF, $FF,  $66);
   271                                         tinted:= true;
   272                                     DrawTextureCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex)
   272                                         Tint($FF, $FF, $FF,  $66);
   273                                     end
   273                                         DrawTextureCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex)
   274                                 else if (Gear^.Tex <> nil) and (((Gear^.State = 0) and ((Gear^.Hedgehog = nil) or (Gear^.Hedgehog^.Team = CurrentTeam))) or (Gear^.State = 2)) then
   274                                         end
   275                                     DrawTextureCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
   275                                     else if (Gear^.Tex <> nil) and (((Gear^.State = 0) and ((Gear^.Hedgehog = nil) or (Gear^.Hedgehog^.Team = CurrentTeam))) or (Gear^.State = 2)) then
   276                                 end;
   276                                         DrawTextureCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
   277                vgtSmallDamageTag: DrawTextureCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
   277                vgtSmallDamageTag: DrawTextureCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
   278                vgtHealthTag: if Gear^.Tex <> nil then
   278                vgtHealthTag: if Gear^.Tex <> nil then
   279                                begin
   279                                begin
   280                                if Gear^.Frame = 0 then
   280                                if Gear^.Frame = 0 then
   281                                    DrawTextureCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex)
   281                                    DrawTextureCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex)
   466 
   466 
   467 procedure AddClouds;
   467 procedure AddClouds;
   468 var i: LongInt;
   468 var i: LongInt;
   469 begin
   469 begin
   470 for i:= 0 to cCloudsNumber - 1 do
   470 for i:= 0 to cCloudsNumber - 1 do
   471     AddVisualGear(cLeftScreenBorder + i * LongInt(cScreenSpace div (cCloudsNumber + 1)), LAND_HEIGHT-1184, vgtCloud)
   471     AddVisualGear(cLeftScreenBorder + i * LongInt(cScreenSpace div (cCloudsNumber + 1)), LAND_HEIGHT-1184, vgtCloud, 0, true)
   472 end;
   472 end;
   473 
   473 
   474 procedure ChangeToSDClouds;
   474 procedure ChangeToSDClouds;
   475 var       i, j: LongInt;
   475 var       i, j: LongInt;
   476     vg, tmp: PVisualGear;
   476     vg, tmp: PVisualGear;
   487             DeleteVisualGear(vg);
   487             DeleteVisualGear(vg);
   488             vg:= tmp
   488             vg:= tmp
   489             end
   489             end
   490         else vg:= vg^.NextGear;
   490         else vg:= vg^.NextGear;
   491     for j:= 0 to cSDCloudsNumber - 1 do
   491     for j:= 0 to cSDCloudsNumber - 1 do
   492         AddVisualGear(cLeftScreenBorder + j * LongInt(cScreenSpace div (cSDCloudsNumber + 1)), LAND_HEIGHT-1184, vgtCloud)
   492         AddVisualGear(cLeftScreenBorder + j * LongInt(cScreenSpace div (cSDCloudsNumber + 1)), LAND_HEIGHT-1184, vgtCloud, 0, true)
   493     end;
   493     end;
   494 end;
   494 end;
   495 
   495 
   496 procedure AddFlakes;
   496 procedure AddFlakes;
   497 var i: LongInt;
   497 var i: LongInt;
   511 var       i: LongInt;
   511 var       i: LongInt;
   512     vg, tmp: PVisualGear;
   512     vg, tmp: PVisualGear;
   513 begin
   513 begin
   514 if (cReducedQuality and rqKillFlakes) <> 0 then
   514 if (cReducedQuality and rqKillFlakes) <> 0 then
   515     exit;
   515     exit;
   516 if vobCount = vobSDCount then
   516 if (vobCount = vobSDCount) and (vobFrameTicks = vobSDFrameTicks) and
       
   517         (vobFramesCount = vobSDFramesCount) and (vobVelocity = vobSDVelocity) and
       
   518         (vobFallSpeed = vobSDFallSpeed) then
   517     exit;
   519     exit;
   518 for i:= 0 to 6 do
   520 for i:= 0 to 6 do
   519     begin
   521     begin
   520     vg:= VisualGearLayers[i];
   522     vg:= VisualGearLayers[i];
   521     while vg <> nil do
   523     while vg <> nil do