diff -r 88bb88294e06 -r faee68a28b82 hedgewars/uVisualGears.pas --- a/hedgewars/uVisualGears.pas Thu Apr 29 17:20:42 2010 +0000 +++ b/hedgewars/uVisualGears.pas Thu Apr 29 17:21:10 2010 +0000 @@ -335,7 +335,8 @@ else begin Gear^.scale := 1.25 * (-power(2, -10 * Int(Gear^.Timer)/Gear^.FrameTicks) + 1) + 0.4; - Gear^.alpha := -1.0 * (power(Gear^.Timer/350, 4) - 1); + Gear^.alpha := 1 - power(Gear^.Timer / 350, 4); + if Gear^.alpha < 0 then Gear^.alpha:= 0; end; end; @@ -755,11 +756,11 @@ vgtSmokeWhite: DrawSprite(sprSmokeWhite, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); vgtDust: DrawSprite(sprDust, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); vgtFeather: begin - if Gear^.FrameTicks < 250 then - glColor4f(1, 1, 1, Gear^.FrameTicks / 250); + if Gear^.FrameTicks < 255 then + Tint($FF, $FF, $FF, Gear^.FrameTicks); DrawRotatedF(sprFeather, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); - if Gear^.FrameTicks < 250 then - glColor4f(1, 1, 1, 1); + if Gear^.FrameTicks < 255 then + Tint($FFFFFFFF); end; end; Gear:= Gear^.NextGear @@ -774,47 +775,47 @@ vgtBubble: DrawSprite(sprBubbles, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy - 8, Gear^.Frame);//(RealTicks div 64 + Gear^.Frame) mod 8); vgtSteam: DrawSprite(sprExplPart, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame); vgtAmmo: begin - glColor4f(1, 1, 1, Gear^.alpha); + Tint($FF, $FF, $FF, floor(Gear^.alpha * $FF)); DrawTextureF(ropeIconTex, Gear^.scale, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, 1, 32, 32); DrawTextureF(SpritesData[sprAMAmmos].Texture, Gear^.scale * 0.90, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame - 1, 1, 32, 32); - glColor4f(1, 1, 1, 1); + Tint($FFFFFFFF); end; vgtHealth: begin case Gear^.Frame div 10 of - 0:glColor4f(0, 1, 0, Gear^.FrameTicks / 1000); - 1:glColor4f(1, 0, 0, Gear^.FrameTicks / 1000); + 0:Tint(0, $FF, 0, floor(Gear^.FrameTicks * $FF / 1000)); + 1:Tint($FF, 0, 0, floor(Gear^.FrameTicks * $FF / 1000)); end; DrawSprite(sprHealth, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy - 8, 0); - glColor4f(1, 1, 1, 1); + Tint($FFFFFFFF); end; vgtShell: begin - if Gear^.FrameTicks < 250 then - glColor4f(1, 1, 1, Gear^.FrameTicks / 250); + if Gear^.FrameTicks < $FF then + Tint($FF, $FF, $FF, Gear^.FrameTicks); DrawRotatedF(sprShell, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); - if Gear^.FrameTicks < 250 then - glColor4f(1, 1, 1, 1); + if Gear^.FrameTicks < $FF then + Tint($FFFFFFFF); end; vgtEgg: begin - if Gear^.FrameTicks < 250 then - glColor4f(1, 1, 1, Gear^.FrameTicks / 250); + if Gear^.FrameTicks < $FF then + Tint($FF, $FF, $FF, Gear^.FrameTicks); DrawRotatedF(sprEgg, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); - if Gear^.FrameTicks < 250 then - glColor4f(1, 1, 1, 1); + if Gear^.FrameTicks < $FF then + Tint($FFFFFFFF); end; vgtSplash: DrawSprite(sprSplash, hwRound(Gear^.X) + WorldDx - 40, hwRound(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37)); vgtDroplet: DrawSprite(sprDroplet, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy - 8, Gear^.Frame); vgtBeeTrace: begin - if Gear^.FrameTicks < 250 then - glColor4f(1, 1, 1, Gear^.FrameTicks / 500) + if Gear^.FrameTicks < $FF then + Tint($FF, $FF, $FF, Gear^.FrameTicks div 2) else - glColor4f(1, 1, 1, 0.5); + Tint($80FFFFFF); DrawRotatedF(sprBeeTrace, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, 1, (RealTicks shr 4) mod cMaxAngle); - glColor4f(1, 1, 1, 1); + Tint($FFFFFFFF); end; vgtSmokeRing: begin - glColor4f(1, 1, 1, Gear^.alpha); + Tint($FF, $FF, $FF, floor(Gear^.alpha * $FF)); DrawRotatedTextureF(SpritesData[sprSmokeRing].Texture, Gear^.scale, 0, 0, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, 1, 200, 200, Gear^.Angle); - glColor4f(1, 1, 1, 1); + Tint($FFFFFFFF); end; end; case Gear^.Kind of