diff -r 502508979713 -r 14ecd5fd4fab hedgewars/uGears.pas --- a/hedgewars/uGears.pas Tue Jun 17 19:22:54 2008 +0000 +++ b/hedgewars/uGears.pas Tue Jun 17 20:00:01 2008 +0000 @@ -510,184 +510,195 @@ DrawSprite(sprHHDeath, hwRound(Gear^.X) - 16 + WorldDx, hwRound(Gear^.Y) - 26 + WorldDy, Gear^.Pos); exit end; + defaultPos:= true; +if (Gear^.State and gstDrowning) <> 0 then + begin + DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, + hwSign(Gear^.dX), + 1, + 7, + 0); + defaultPos:= false + end else + if (Gear^.State and gstHHDriven) <> 0 then begin - hx:= hwRound(Gear^.X) + 1 + 8 * hwSign(Gear^.dX) + WorldDx; - hy:= hwRound(Gear^.Y) - 2 + WorldDy; - aangle:= Gear^.Angle * 180 / cMaxAngle - 90; + hx:= hwRound(Gear^.X) + 1 + 8 * hwSign(Gear^.dX) + WorldDx; + hy:= hwRound(Gear^.Y) - 2 + WorldDy; + aangle:= Gear^.Angle * 180 / cMaxAngle - 90; - if CurAmmoGear <> nil then - begin - case CurAmmoGear^.Kind of - 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 - dAngle:= 0; - m:= 1 - end else - begin - dAngle:= 180; - m:= -1 - end; - DrawHedgehog(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, - m, - 1, - 0, - DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + dAngle); - defaultPos:= false - end; - gtBlowTorch: begin - DrawRotated(sprBlowTorch, hx, hy, hwSign(Gear^.dX), aangle); - DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, - hwSign(Gear^.dX), - 1, - 3, - 0); - defaultPos:= false - end; - gtShover: DrawRotated(sprHandBaseball, hx, hy, hwSign(Gear^.dX), aangle + 180); - gtFirePunch: begin - DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, - hwSign(Gear^.dX), - 1, - 4, - 0); - defaultPos:= false + if CurAmmoGear <> nil then + begin + case CurAmmoGear^.Kind of + 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 + dAngle:= 0; + m:= 1 + end else + begin + dAngle:= 180; + m:= -1 end; - gtPickHammer, - gtTeleport: defaultPos:= false; - gtKamikaze: begin - if CurAmmoGear^.Pos = 0 then - DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, - hwSign(Gear^.dX), - 1, - 6, - 0) - else - DrawRotatedF(sprKamikaze, - hwRound(Gear^.X) + WorldDx, - hwRound(Gear^.Y) + WorldDy, - CurAmmoGear^.Pos - 1, - 1, - DxDy2Angle(Gear^.dY, Gear^.dX)); - - defaultPos:= false - end; - end; + DrawHedgehog(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, + m, + 1, + 0, + DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + dAngle); + defaultPos:= false + end; + gtBlowTorch: begin + DrawRotated(sprBlowTorch, hx, hy, hwSign(Gear^.dX), aangle); + DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, + hwSign(Gear^.dX), + 1, + 3, + 0); + defaultPos:= false + end; + gtShover: DrawRotated(sprHandBaseball, hx, hy, hwSign(Gear^.dX), aangle + 180); + gtFirePunch: begin + DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, + hwSign(Gear^.dX), + 1, + 4, + 0); + defaultPos:= false + end; + gtPickHammer, + gtTeleport: defaultPos:= false; + gtKamikaze: begin + if CurAmmoGear^.Pos = 0 then + DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, + hwSign(Gear^.dX), + 1, + 6, + 0) + else + DrawRotatedF(sprKamikaze, + hwRound(Gear^.X) + WorldDx, + hwRound(Gear^.Y) + WorldDy, + CurAmmoGear^.Pos - 1, + 1, + DxDy2Angle(Gear^.dY, Gear^.dX)); + + defaultPos:= false + end; + 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 - 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 + if ((Gear^.State and gstHHJumping) <> 0) then + begin + if ((Gear^.State and gstHHHJump) <> 0) then + DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, + - hwSign(Gear^.dX), + 1, + 1, + 0) + else + DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, + hwSign(Gear^.dX), + 1, + 1, + 0); + defaultPos:= false + end else - if ((Gear^.State and gstHHJumping) <> 0) then + if (Gear^.Message and (gm_Left or gm_Right) <> 0) then begin - if ((Gear^.State and gstHHHJump) <> 0) then - DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, - - hwSign(Gear^.dX), - 1, - 1, - 0) - else - DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, - hwSign(Gear^.dX), - 1, - 1, - 0); + DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, + hwSign(Gear^.dX), + 0, + PHedgehog(Gear^.Hedgehog)^.visStepPos div 2, + 0); defaultPos:= false - end else - - if (Gear^.Message and (gm_Left or gm_Right) <> 0) then - begin + end + else + + if ((Gear^.State and gstAttacked) = 0) then + begin + amt:= CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].AmmoType; + case amt of + amBazooka, + amMortar: DrawRotated(sprHandBazooka, hx, hy, hwSign(Gear^.dX), aangle); + amRope: DrawRotated(sprHandRope, hx, hy, hwSign(Gear^.dX), aangle); + amShotgun: DrawRotated(sprHandShotgun, hx, hy, hwSign(Gear^.dX), aangle); + amDEagle: DrawRotated(sprHandDEagle, hx, hy, hwSign(Gear^.dX), aangle); + amBlowTorch: DrawRotated(sprHandBlowTorch, hx, hy, hwSign(Gear^.dX), aangle); + end; + + case amt of + 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, + hwSign(Gear^.dX), + 1, + 2, + 0); + amBlowTorch: DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, + hwSign(Gear^.dX), + 1, + 3, + 0); + amTeleport: DrawRotatedF(sprTeleport, hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, 0, hwSign(Gear^.dX), 0); + amKamikaze: DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, + hwSign(Gear^.dX), + 1, + 5, + 0); + else DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, hwSign(Gear^.dX), 0, - PHedgehog(Gear^.Hedgehog)^.visStepPos div 2, + 4, 0); - defaultPos:= false - end - else + end; - if ((Gear^.State and gstAttacked) = 0) then - begin - amt:= CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].AmmoType; - case amt of - amBazooka, - amMortar: DrawRotated(sprHandBazooka, hx, hy, hwSign(Gear^.dX), aangle); - amRope: DrawRotated(sprHandRope, hx, hy, hwSign(Gear^.dX), aangle); - amShotgun: DrawRotated(sprHandShotgun, hx, hy, hwSign(Gear^.dX), aangle); - amDEagle: DrawRotated(sprHandDEagle, hx, hy, hwSign(Gear^.dX), aangle); - amBlowTorch: DrawRotated(sprHandBlowTorch, hx, hy, hwSign(Gear^.dX), aangle); - end; + case amt of + amBaseballBat: DrawRotated(sprHandBaseball, + hwRound(Gear^.X) + 1 - 4 * hwSign(Gear^.dX) + WorldDx, + hwRound(Gear^.Y) + 6 + WorldDy, hwSign(Gear^.dX), aangle); + end; - case amt of - 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, - hwSign(Gear^.dX), - 1, - 2, - 0); - amBlowTorch: DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, - hwSign(Gear^.dX), - 1, - 3, - 0); - amTeleport: DrawRotatedF(sprTeleport, hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, 0, hwSign(Gear^.dX), 0); - amKamikaze: DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, - hwSign(Gear^.dX), - 1, - 5, - 0); - else - DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, - hwSign(Gear^.dX), - 0, - 4, - 0); - end; - - case amt of - amBaseballBat: DrawRotated(sprHandBaseball, - hwRound(Gear^.X) + 1 - 4 * hwSign(Gear^.dX) + WorldDx, - hwRound(Gear^.Y) + 6 + WorldDy, hwSign(Gear^.dX), aangle); - end; - - defaultPos:= false - end - end else // not gstHHDriven - if ((Gear^.State and gstHHJumping) <> 0) then - begin - if ((Gear^.State and gstHHHJump) <> 0) then - DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, - - hwSign(Gear^.dX), - 1, - 1, - 0) - else - DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, - hwSign(Gear^.dX), - 1, - 1, - 0); - defaultPos:= false - end; + defaultPos:= false + end +end else // not gstHHDriven +if ((Gear^.State and gstHHJumping) <> 0) then +begin +if ((Gear^.State and gstHHHJump) <> 0) then + DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, + - hwSign(Gear^.dX), + 1, + 1, + 0) + else + DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, + hwSign(Gear^.dX), + 1, + 1, + 0); + defaultPos:= false +end; if defaultPos then