hedgewars/uVisualGears.pas
changeset 14572 34e810295d08
parent 13633 35d93b1e7fef
child 14584 ab79cd4a7382
equal deleted inserted replaced
14571:1d3dc553829c 14572:34e810295d08
   190     // this layer is on the land level (which is close but behind the screen plane) when stereo
   190     // this layer is on the land level (which is close but behind the screen plane) when stereo
   191     1: begin
   191     1: begin
   192        Gear:= VisualGearLayers[1];
   192        Gear:= VisualGearLayers[1];
   193        while Gear <> nil do
   193        while Gear <> nil do
   194           begin
   194           begin
   195           //tinted:= false;
       
   196           if Gear^.Tint <> $FFFFFFFF then
   195           if Gear^.Tint <> $FFFFFFFF then
   197               Tint(Gear^.Tint);
   196               Tint(Gear^.Tint);
   198           case Gear^.Kind of
   197           case Gear^.Kind of
   199               vgtFlake: if (not worldIsShifted) then
   198               vgtFlake: if (not worldIsShifted) then
   200                             begin
   199                             begin
   225                   vgtSplash: begin
   224                   vgtSplash: begin
   226                              spriteData:= GetSpriteData(sprSplash, sprSDSplash);
   225                              spriteData:= GetSpriteData(sprSplash, sprSDSplash);
   227                              if Gear^.Angle <> 0 then
   226                              if Gear^.Angle <> 0 then
   228                                 DrawTextureRotatedF(spriteData^.Texture, Gear^.scale, 0, 0, round(Gear^.X + WorldDx + (((spriteData^.Height+8)*Gear^.Scale)/2) * (Gear^.Angle / abs(Gear^.Angle))), round(Gear^.Y + WorldDy), 19 - (Gear^.FrameTicks div Gear^.Timer div 37), 1, spriteData^.Width, spriteData^.Height, Gear^.Angle)
   227                                 DrawTextureRotatedF(spriteData^.Texture, Gear^.scale, 0, 0, round(Gear^.X + WorldDx + (((spriteData^.Height+8)*Gear^.Scale)/2) * (Gear^.Angle / abs(Gear^.Angle))), round(Gear^.Y + WorldDy), 19 - (Gear^.FrameTicks div Gear^.Timer div 37), 1, spriteData^.Width, spriteData^.Height, Gear^.Angle)
   229                              else
   228                              else
   230                                 //DrawSprite(sprite, round(Gear^.X) + WorldDx - 40, round(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37))
       
   231                                 DrawTextureF(spriteData^.Texture, Gear^.scale, round(Gear^.X + WorldDx), round(Gear^.Y + WorldDy - ((spriteData^.Height+8)*Gear^.Scale)/2), 19 - (Gear^.FrameTicks div Gear^.Timer div 37), 1, spriteData^.Width, spriteData^.Height);
   229                                 DrawTextureF(spriteData^.Texture, Gear^.scale, round(Gear^.X + WorldDx), round(Gear^.Y + WorldDy - ((spriteData^.Height+8)*Gear^.Scale)/2), 19 - (Gear^.FrameTicks div Gear^.Timer div 37), 1, spriteData^.Width, spriteData^.Height);
   232                              end;
   230                              end;
   233                   vgtDroplet: begin
   231                   vgtDroplet: begin
   234                               sprite:= GetSprite(sprDroplet, sprSDDroplet);
   232                               sprite:= GetSprite(sprDroplet, sprSDDroplet);
   235                               DrawSprite(sprite, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame);
   233                               DrawSprite(sprite, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame);
   236                               end;
   234                               end;
   237                   vgtBubble: DrawSprite(sprBubbles, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame);//(RealTicks div 64 + Gear^.Frame) mod 8);
   235                   vgtBubble: DrawSprite(sprBubbles, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame);
   238                vgtStraightShot: begin
   236                vgtStraightShot: begin
   239                                 if Gear^.dX < 0 then
   237                                 if Gear^.dX < 0 then
   240                                     i:= -1
   238                                     i:= -1
   241                                 else
   239                                 else
   242                                     i:= 1;
   240                                     i:= 1;
   243                                 DrawTextureRotatedF(SpritesData[TSprite(Gear^.State)].Texture, Gear^.Scale, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, i, SpritesData[TSprite(Gear^.State)].Width, SpritesData[TSprite(Gear^.State)].Height, Gear^.Angle);
   241                                 DrawTextureRotatedF(SpritesData[TSprite(Gear^.State)].Texture, Gear^.Scale, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, i, SpritesData[TSprite(Gear^.State)].Width, SpritesData[TSprite(Gear^.State)].Height, Gear^.Angle);
   244                                 end;
   242                                 end;
   245               end;
   243               end;
   246           //if (Gear^.Tint <> $FFFFFFFF) or tinted then untint;
       
   247           if (Gear^.Tint <> $FFFFFFFF) then
   244           if (Gear^.Tint <> $FFFFFFFF) then
   248               untint;
   245               untint;
   249           Gear:= Gear^.NextGear
   246           Gear:= Gear^.NextGear
   250           end
   247           end
   251        end;
   248        end;
   256            begin
   253            begin
   257            tinted:= false;
   254            tinted:= false;
   258            if Gear^.Tint <> $FFFFFFFF then
   255            if Gear^.Tint <> $FFFFFFFF then
   259                Tint(Gear^.Tint);
   256                Tint(Gear^.Tint);
   260            case Gear^.Kind of
   257            case Gear^.Kind of
   261 (*
       
   262               vgtFlake: begin
       
   263                         sprite:= GetSprite(sprFlake, sprSDFlake);
       
   264                         if speedlessFlakes then
       
   265                             DrawSprite(sprite, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame)
       
   266                         else
       
   267                             DrawSpriteRotatedF(sprite, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle)
       
   268                         end;*)
       
   269                vgtSpeechBubble: if (Gear^.Angle <> 0) then
   258                vgtSpeechBubble: if (Gear^.Angle <> 0) then
   270                                 // ^ Before this gear renders, Angle must be set to mark it ready (e.g. coordinates properly initialized)
   259                                 // ^ Before this gear renders, Angle must be set to mark it ready (e.g. coordinates properly initialized)
   271                                     if (Gear^.Tex <> nil) and (((Gear^.State = 0) and (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Team <> CurrentTeam)) or (Gear^.State = 1)) then
   260                                     if (Gear^.Tex <> nil) and (((Gear^.State = 0) and (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Team <> CurrentTeam)) or (Gear^.State = 1)) then
   272                                         begin
   261                                         begin
   273                                         tinted:= true;
   262                                         tinted:= true;