# HG changeset patch # User unc0rr # Date 1209220501 0 # Node ID d5b6e0ae57554588fbd5ea5a7b84abc4b17b223e # Parent 226d0de2fb68a563620ac0f0965777d11de6f5f0 Desert Eagle and Shotgun shot animations diff -r 226d0de2fb68 -r d5b6e0ae5755 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Fri Apr 25 22:03:18 2008 +0000 +++ b/hedgewars/GSHandlers.inc Sat Apr 26 14:35:01 2008 +0000 @@ -284,37 +284,51 @@ end; //////////////////////////////////////////////////////////////////////////////// +procedure doStepShotIdle(Gear: PGear); +begin +AllInactive:= false; +inc(Gear^.Timer); +if Gear^.Timer > 75 then + begin + DeleteGear(Gear); + AfterAttack + end +end; + procedure doStepShotgunShot(Gear: PGear); var i: LongWord; begin AllInactive:= false; -if Gear^.Timer > 0 then - begin - dec(Gear^.Timer); - if Gear^.Timer = 0 then PlaySound(sndShotgunFire, false); - exit - end; + +if ((Gear^.State and gstAnimation) = 0) then + begin + dec(Gear^.Timer); + if Gear^.Timer = 0 then + begin + PlaySound(sndShotgunFire, false); + Gear^.State:= Gear^.State or gstAnimation + end; + exit + end + else inc(Gear^.Timer); + i:= 200; repeat Gear^.X:= Gear^.X + Gear^.dX; Gear^.Y:= Gear^.Y + Gear^.dY; CheckCollision(Gear); if (Gear^.State and gstCollision) <> 0 then - begin - Gear^.X:= Gear^.X + Gear^.dX * 8; - Gear^.Y:= Gear^.Y + Gear^.dY * 8; - ShotgunShot(Gear); - DeleteGear(Gear); - AfterAttack; - exit - end; + begin + Gear^.X:= Gear^.X + Gear^.dX * 8; + Gear^.Y:= Gear^.Y + Gear^.dY * 8; + ShotgunShot(Gear); + Gear^.doStep:= @doStepShotIdle; + exit + end; dec(i) until i = 0; if (Gear^.X < _0) or (Gear^.Y < _0) or (Gear^.X > _2048) or (Gear^.Y > _1024) then - begin - DeleteGear(Gear); - AfterAttack - end + Gear^.doStep:= @doStepShotIdle end; //////////////////////////////////////////////////////////////////////////////// @@ -323,6 +337,7 @@ oX, oY: hwFloat; begin AllInactive:= false; +inc(Gear^.Timer); i:= 80; oX:= Gear^.X; oY:= Gear^.Y; @@ -343,7 +358,7 @@ Gear^.Damage:= 0 end; if (Gear^.Health <= 0) or (Gear^.X < _0) or (Gear^.Y < _0) or (Gear^.X > _2048) or (Gear^.Y > _1024) then - DeleteGear(Gear) + Gear^.doStep:= @doStepShotIdle end; procedure doStepDEagleShot(Gear: PGear); diff -r 226d0de2fb68 -r d5b6e0ae5755 hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Fri Apr 25 22:03:18 2008 +0000 +++ b/hedgewars/HHHandlers.inc Sat Apr 26 14:35:01 2008 +0000 @@ -113,7 +113,7 @@ AddGear(hwRound(X) + hwSign(dX) * 7, hwRound(Y), gtMine, 0, SignAs(_0_02, dX), _0, 3000); PlaySound(sndLaugh, false) end; - amDEagle: AddGear(hwRound(X + xx * cHHRadius), hwRound(Y + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0); + amDEagle: CurAmmoGear:= AddGear(hwRound(X + xx * cHHRadius), hwRound(Y + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0); amDynamite: AddGear(hwRound(X) + hwSign(dX) * 7, hwRound(Y), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000); amBaseballBat: CurAmmoGear:= AddGear(hwRound(X) + hwSign(dX) * 10, hwRound(Y), gtShover, 0, xx * _0_5, yy * _0_5, 0); amFirePunch: CurAmmoGear:= AddGear(hwRound(X) + hwSign(dX) * 10, hwRound(Y), gtFirePunch, 0, _0, _0, 0); diff -r 226d0de2fb68 -r d5b6e0ae5755 hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Fri Apr 25 22:03:18 2008 +0000 +++ b/hedgewars/uConsts.pas Sat Apr 26 14:35:01 2008 +0000 @@ -43,7 +43,8 @@ sprQuestion, sprPowerBar, sprWindBar, sprWindL, sprWindR, sprFlake, sprHandRope, sprHandBazooka, sprHandShotgun, sprHandDEagle, sprHandAirAttack, sprHandBaseball, sprPHammer, - sprHandBlowTorch, sprBlowTorch, sprTeleport, sprHHDeath); + sprHandBlowTorch, sprBlowTorch, sprTeleport, sprHHDeath, + sprShotgun, sprDEagle); TGearType = (gtAmmo_Bomb, gtHedgehog, gtAmmo_Grenade, gtHealthTag, gtGrave, gtUFO, gtShotgunShot, gtPickHammer, gtRope, @@ -355,9 +356,9 @@ (FileName: 'amBazooka'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; Width: 32; Height: 32; saveSurf: false),// sprHandBazooka (FileName: 'amShotgun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; saveSurf: false),// sprHandShotgun + Width: 64; Height: 64; saveSurf: false),// sprHandShotgun (FileName: 'amDEagle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; saveSurf: false),// sprHandDEagle + Width: 64; Height: 64; saveSurf: false),// sprHandDEagle (FileName:'amAirAttack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; Width: 32; Height: 32; saveSurf: false),// sprHandAirAttack (FileName: 'amBaseball'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; @@ -371,7 +372,11 @@ (FileName: 'Teleport'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; Width: 64; Height: 32; saveSurf: false),// sprTeleport (FileName: 'HHDeath'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 64; saveSurf: false) // sprHHDeath + Width: 32; Height: 64; saveSurf: false),// sprHHDeath + (FileName:'amShotgun_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; saveSurf: false),// sprShotgun + (FileName: 'amDEagle_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; saveSurf: false) // sprDEagle ); Soundz: array[TSound] of record diff -r 226d0de2fb68 -r d5b6e0ae5755 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Fri Apr 25 22:03:18 2008 +0000 +++ b/hedgewars/uGears.pas Sat Apr 26 14:35:01 2008 +0000 @@ -509,7 +509,11 @@ if CurAmmoGear <> nil then begin case CurAmmoGear^.Kind of - gtShotgunShot: DrawRotated(sprHandShotgun, hx, hy, hwSign(Gear^.dX), aangle); + gtShotgunShot: if (CurAmmoGear^.State and gstAnimation <> 0) then + DrawRotated(sprShotgun, hx, hy, hwSign(Gear^.dX), aangle) + else + DrawRotated(sprHandShotgun, hx, hy, hwSign(Gear^.dX), aangle); + gtDEagleShot: DrawRotated(sprDEagle, hx, hy, hwSign(Gear^.dX), aangle); gtRope: begin if Gear^.X < CurAmmoGear^.X then begin @@ -538,6 +542,19 @@ gtShover: DrawRotated(sprHandBaseball, hx, hy, hwSign(Gear^.dX), aangle + 180); gtPickHammer, gtTeleport: defaultPos:= false; + end; + + case CurAmmoGear^.Kind of + gtShotgunShot, + gtDEagleShot, + gtShover: begin + DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, + hwSign(Gear^.dX), + 0, + 4, + 0); + defaultPos:= false + end end end else @@ -581,15 +598,6 @@ end; case amt of - amBazooka, - amRope, - amShotgun, - amDEagle, - amBaseballBat: DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, - hwSign(Gear^.dX), - 0, - 4, - 0); amAirAttack, amMineStrike: DrawRotated(sprHandAirAttack, hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) + WorldDy, hwSign(Gear^.dX), 0); amPickHammer: DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, diff -r 226d0de2fb68 -r d5b6e0ae5755 share/hedgewars/Data/Graphics/Hedgehog/amDEagle.png Binary file share/hedgewars/Data/Graphics/Hedgehog/amDEagle.png has changed diff -r 226d0de2fb68 -r d5b6e0ae5755 share/hedgewars/Data/Graphics/Hedgehog/amDEagle_w.png Binary file share/hedgewars/Data/Graphics/Hedgehog/amDEagle_w.png has changed diff -r 226d0de2fb68 -r d5b6e0ae5755 share/hedgewars/Data/Graphics/Hedgehog/amShotgun.png Binary file share/hedgewars/Data/Graphics/Hedgehog/amShotgun.png has changed diff -r 226d0de2fb68 -r d5b6e0ae5755 share/hedgewars/Data/Graphics/Hedgehog/amShotgun_w.png Binary file share/hedgewars/Data/Graphics/Hedgehog/amShotgun_w.png has changed