373 end; |
373 end; |
374 end; |
374 end; |
375 // draw crosshair |
375 // draw crosshair |
376 CrosshairX := Round(hwRound(Gear^.X) + dx * 80 + GetLaunchX(HH^.CurAmmoType, sign * m, Gear^.Angle)); |
376 CrosshairX := Round(hwRound(Gear^.X) + dx * 80 + GetLaunchX(HH^.CurAmmoType, sign * m, Gear^.Angle)); |
377 CrosshairY := Round(hwRound(Gear^.Y) + dy * 80 + GetLaunchY(HH^.CurAmmoType, Gear^.Angle)); |
377 CrosshairY := Round(hwRound(Gear^.Y) + dy * 80 + GetLaunchY(HH^.CurAmmoType, Gear^.Angle)); |
378 |
378 |
379 |
379 |
380 DrawTextureRotated(HH^.Team^.CrosshairTex, |
380 DrawTextureRotated(HH^.Team^.CrosshairTex, |
381 12, 12, CrosshairX + WorldDx, CrosshairY + WorldDy, 0, |
381 12, 12, CrosshairX + WorldDx, CrosshairY + WorldDy, 0, |
382 sign * (Gear^.Angle * 180.0) / cMaxAngle); |
382 sign * (Gear^.Angle * 180.0) / cMaxAngle); |
383 end; |
383 end; |
384 hx:= ox + 8 * sign; |
384 hx:= ox + 8 * sign; |
649 amDrill: DrawSpriteRotated(sprHandDrill, hx, hy, sign, aangle); |
649 amDrill: DrawSpriteRotated(sprHandDrill, hx, hy, sign, aangle); |
650 amRope: DrawSpriteRotated(sprHandRope, hx, hy, sign, aangle); |
650 amRope: DrawSpriteRotated(sprHandRope, hx, hy, sign, aangle); |
651 amShotgun: DrawSpriteRotated(sprHandShotgun, hx, hy, sign, aangle); |
651 amShotgun: DrawSpriteRotated(sprHandShotgun, hx, hy, sign, aangle); |
652 amDEagle: DrawSpriteRotated(sprHandDEagle, hx, hy, sign, aangle); |
652 amDEagle: DrawSpriteRotated(sprHandDEagle, hx, hy, sign, aangle); |
653 amSineGun: DrawSpriteRotatedF(sprHandSinegun, hx, hy, 73 + (sign * LongInt(RealTicks div 73)) mod 8, sign, aangle); |
653 amSineGun: DrawSpriteRotatedF(sprHandSinegun, hx, hy, 73 + (sign * LongInt(RealTicks div 73)) mod 8, sign, aangle); |
654 |
654 |
655 amPortalGun: |
655 amPortalGun: |
656 if (CurWeapon^.Timer and 2) <> 0 then // Add a new Hedgehog value instead of abusing timer? |
656 if (CurWeapon^.Timer and 2) <> 0 then // Add a new Hedgehog value instead of abusing timer? |
657 DrawSpriteRotatedF(sprPortalGun, hx, hy, 0, sign, aangle) |
657 DrawSpriteRotatedF(sprPortalGun, hx, hy, 0, sign, aangle) |
658 else |
658 else |
659 DrawSpriteRotatedF(sprPortalGun, hx, hy, 1+CurWeapon^.Pos, sign, aangle); |
659 DrawSpriteRotatedF(sprPortalGun, hx, hy, 1+CurWeapon^.Pos, sign, aangle); |
660 |
660 |
661 amSniperRifle: DrawSpriteRotatedF(sprSniperRifle, hx, hy, 0, sign, aangle); |
661 amSniperRifle: DrawSpriteRotatedF(sprSniperRifle, hx, hy, 0, sign, aangle); |
662 amBlowTorch: DrawSpriteRotated(sprHandBlowTorch, hx, hy, sign, aangle); |
662 amBlowTorch: DrawSpriteRotated(sprHandBlowTorch, hx, hy, sign, aangle); |
663 amCake: DrawSpriteRotated(sprHandCake, hx, hy, sign, aangle); |
663 amCake: DrawSpriteRotated(sprHandCake, hx, hy, sign, aangle); |
664 amGrenade: DrawSpriteRotated(sprHandGrenade, hx, hy, sign, aangle); |
664 amGrenade: DrawSpriteRotated(sprHandGrenade, hx, hy, sign, aangle); |
665 amWatermelon: DrawSpriteRotated(sprHandMelon, hx, hy, sign, aangle); |
665 amWatermelon: DrawSpriteRotated(sprHandMelon, hx, hy, sign, aangle); |
671 amMine: DrawSpriteRotated(sprHandMine, hx, hy, sign, aangle); |
671 amMine: DrawSpriteRotated(sprHandMine, hx, hy, sign, aangle); |
672 amSMine: DrawSpriteRotated(sprHandSMine, hx, hy, sign, aangle); |
672 amSMine: DrawSpriteRotated(sprHandSMine, hx, hy, sign, aangle); |
673 amKnife: DrawSpriteRotatedF(sprHandKnife, hx, hy, 0, sign, aangle); |
673 amKnife: DrawSpriteRotatedF(sprHandKnife, hx, hy, 0, sign, aangle); |
674 amSeduction: begin |
674 amSeduction: begin |
675 DrawSpriteRotated(sprHandSeduction, hx, hy, sign, aangle); |
675 DrawSpriteRotated(sprHandSeduction, hx, hy, sign, aangle); |
676 DrawCircle(ox, oy, 248, 4, $FF, $00, $00, $AA); |
676 DrawCircle(ox, oy, 248, 4, $FF, $00, $00, $AA); |
677 //Tint($FF, $0, $0, $AA); |
677 //Tint($FF, $0, $0, $AA); |
678 //DrawTexture(ox - 240, oy - 240, SpritesData[sprVampiric].Texture, 10); |
678 //DrawTexture(ox - 240, oy - 240, SpritesData[sprVampiric].Texture, 10); |
679 //Tint($FF, $FF, $FF, $FF); |
679 //Tint($FF, $FF, $FF, $FF); |
680 end; |
680 end; |
681 amVampiric: DrawSpriteRotatedF(sprHandVamp, hx, hy, (RealTicks div 125) mod 4, sign, aangle); |
681 amVampiric: DrawSpriteRotatedF(sprHandVamp, hx, hy, (RealTicks div 125) mod 4, sign, aangle); |
948 if HH^.Effects[heFrozen] < 150000 then |
948 if HH^.Effects[heFrozen] < 150000 then |
949 begin |
949 begin |
950 if HH^.Effects[heFrozen] < 150000 then |
950 if HH^.Effects[heFrozen] < 150000 then |
951 Tint($FF, $FF, $FF, min(255,127+HH^.Effects[heFrozen] div 800)); |
951 Tint($FF, $FF, $FF, min(255,127+HH^.Effects[heFrozen] div 800)); |
952 |
952 |
953 iceOffset:= trunc(min(256,HH^.Effects[heFrozen]) / 256 * 64); |
953 iceOffset:= min(32, HH^.Effects[heFrozen] div 8); |
954 r.x := 128; |
954 r.x := 128; |
955 r.y := 128 - iceOffset; |
955 r.y := 96 - iceOffset; |
956 r.w := 64; |
956 r.w := 32; |
957 r.h := iceOffset; |
957 r.h := iceOffset; |
958 //DrawTextureFromRect(sx-32, sy-iceoffset+32, @r, SpritesData[sprFrozenHog].texture); |
958 if sign = -1 then |
959 DrawTextureFromRectDir(sx-16+sign*2, sy+48-iceoffset, r.w, r.h, @r, HHTexture, sign); |
959 DrawTextureFromRectDir(sx + sign*2, sy+16-iceoffset, r.w, r.h, @r, HHTexture, sign) |
|
960 else |
|
961 DrawTextureFromRectDir(sx-16 + sign*2, sy+16-iceoffset, r.w, r.h, @r, HHTexture, sign); |
|
962 |
960 |
963 |
961 if HH^.Effects[heFrozen] < 150000 then |
964 if HH^.Effects[heFrozen] < 150000 then |
962 Tint($FF, $FF, $FF, $FF); |
965 Tint($FF, $FF, $FF, $FF); |
963 end; |
966 end; |
964 |
967 |
983 startX, endX, startY, endY: LongInt; |
986 startX, endX, startY, endY: LongInt; |
984 begin |
987 begin |
985 if Gear^.Target.X <> NoPointX then |
988 if Gear^.Target.X <> NoPointX then |
986 if Gear^.AmmoType = amBee then |
989 if Gear^.AmmoType = amBee then |
987 DrawSpriteRotatedF(sprTargetBee, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360) |
990 DrawSpriteRotatedF(sprTargetBee, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360) |
988 else if Gear^.AmmoType = amIceGun then |
991 else if Gear^.AmmoType = amIceGun then |
989 //DrawSprite(sprSnowDust, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8) |
992 //DrawSprite(sprSnowDust, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8) |
990 //DrawTextureRotatedF(SpritesData[sprSnowDust].Texture, 1, 0, 0, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8, 1, 22, 22, (RealTicks shr 3) mod 360) |
993 //DrawTextureRotatedF(SpritesData[sprSnowDust].Texture, 1, 0, 0, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8, 1, 22, 22, (RealTicks shr 3) mod 360) |
991 DrawTextureRotatedF(SpritesData[sprSnowDust].Texture, 1/(1+(RealTicks shr 8) mod 5), 0, 0, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8, 1, 22, 22, (RealTicks shr 3) mod 360) |
994 DrawTextureRotatedF(SpritesData[sprSnowDust].Texture, 1/(1+(RealTicks shr 8) mod 5), 0, 0, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8, 1, 22, 22, (RealTicks shr 3) mod 360) |
992 else |
995 else |
993 DrawSpriteRotatedF(sprTargetP, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360); |
996 DrawSpriteRotatedF(sprTargetP, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360); |
994 |
997 |
995 case Gear^.Kind of |
998 case Gear^.Kind of |
996 gtGrenade: DrawSpriteRotated(sprBomb, x, y, 0, Gear^.DirAngle); |
999 gtGrenade: DrawSpriteRotated(sprBomb, x, y, 0, Gear^.DirAngle); |
997 gtSnowball: DrawSpriteRotated(sprSnowball, x, y, 0, Gear^.DirAngle); |
1000 gtSnowball: DrawSpriteRotated(sprSnowball, x, y, 0, Gear^.DirAngle); |
998 gtGasBomb: DrawSpriteRotated(sprCheese, x, y, 0, Gear^.DirAngle); |
1001 gtGasBomb: DrawSpriteRotated(sprCheese, x, y, 0, Gear^.DirAngle); |
999 |
1002 |
1000 gtMolotov: if (Gear^.State and gstDrowning) = 0 then |
1003 gtMolotov: if (Gear^.State and gstDrowning) = 0 then |
1001 DrawSpriteRotatedF(sprMolotov, x, y, (RealTicks div 125) mod 8, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX)) |
1004 DrawSpriteRotatedF(sprMolotov, x, y, (RealTicks div 125) mod 8, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX)) |
1002 else DrawSprite(sprMolotov, x, y, 8); |
1005 else DrawSprite(sprMolotov, x, y, 8); |
1003 |
1006 |
1004 gtRCPlane: begin |
1007 gtRCPlane: begin |
1038 end |
1041 end |
1039 end; |
1042 end; |
1040 gtBee: DrawSpriteRotatedF(sprBee, x, y, (GameTicks shr 5) mod 2, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); |
1043 gtBee: DrawSpriteRotatedF(sprBee, x, y, (GameTicks shr 5) mod 2, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); |
1041 gtPickHammer: DrawSprite(sprPHammer, x - 16, y - 50 + LongInt(((GameTicks shr 5) and 1) * 2), 0); |
1044 gtPickHammer: DrawSprite(sprPHammer, x - 16, y - 50 + LongInt(((GameTicks shr 5) and 1) * 2), 0); |
1042 gtRope: DrawRope(Gear); |
1045 gtRope: DrawRope(Gear); |
1043 |
1046 |
1044 gtMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then |
1047 gtMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then |
1045 DrawSpriteRotated(sprMineOff, x, y, 0, Gear^.DirAngle) |
1048 DrawSpriteRotated(sprMineOff, x, y, 0, Gear^.DirAngle) |
1046 else if Gear^.Health <> 0 then |
1049 else if Gear^.Health <> 0 then |
1047 DrawSpriteRotated(sprMineOn, x, y, 0, Gear^.DirAngle) |
1050 DrawSpriteRotated(sprMineOn, x, y, 0, Gear^.DirAngle) |
1048 else DrawSpriteRotated(sprMineDead, x, y, 0, Gear^.DirAngle); |
1051 else DrawSpriteRotated(sprMineDead, x, y, 0, Gear^.DirAngle); |
1049 |
1052 |
1050 gtSMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then |
1053 gtSMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then |
1051 DrawSpriteRotated(sprSMineOff, x, y, 0, Gear^.DirAngle) |
1054 DrawSpriteRotated(sprSMineOff, x, y, 0, Gear^.DirAngle) |
1052 else if Gear^.Health <> 0 then |
1055 else if Gear^.Health <> 0 then |
1053 DrawSpriteRotated(sprSMineOn, x, y, 0, Gear^.DirAngle) |
1056 DrawSpriteRotated(sprSMineOn, x, y, 0, Gear^.DirAngle) |
1054 else DrawSpriteRotated(sprMineDead, x, y, 0, Gear^.DirAngle); |
1057 else DrawSpriteRotated(sprMineDead, x, y, 0, Gear^.DirAngle); |
1055 gtKnife: DrawSpriteRotatedF(sprKnife, x, y, 0, hwSign(Gear^.dX), Gear^.DirAngle); |
1058 gtKnife: DrawSpriteRotatedF(sprKnife, x, y, 0, hwSign(Gear^.dX), Gear^.DirAngle); |
1056 |
1059 |
1057 gtCase: begin |
1060 gtCase: begin |
1058 if Gear^.Timer > 1000 then |
1061 if Gear^.Timer > 1000 then |
1059 begin |
1062 begin |
1060 if ((Gear^.Pos and posCaseAmmo) <> 0) then |
1063 if ((Gear^.Pos and posCaseAmmo) <> 0) then |
1061 begin |
1064 begin |
1135 DrawSpriteRotatedF(sprCakeWalk, x, y, (GameTicks div 40) mod 6, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX) + 90) |
1138 DrawSpriteRotatedF(sprCakeWalk, x, y, (GameTicks div 40) mod 6, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX) + 90) |
1136 else |
1139 else |
1137 DrawSpriteRotatedF(sprCakeDown, x, y, 5 - Gear^.Pos, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX) + 90); |
1140 DrawSpriteRotatedF(sprCakeDown, x, y, 5 - Gear^.Pos, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX) + 90); |
1138 gtSeduction: if Gear^.Pos >= 14 then |
1141 gtSeduction: if Gear^.Pos >= 14 then |
1139 DrawSprite(sprSeduction, x - 16, y - 16, 0); |
1142 DrawSprite(sprSeduction, x - 16, y - 16, 0); |
1140 |
1143 |
1141 gtWatermelon: DrawSpriteRotatedF(sprWatermelon, x, y, 0, 0, Gear^.DirAngle); |
1144 gtWatermelon: DrawSpriteRotatedF(sprWatermelon, x, y, 0, 0, Gear^.DirAngle); |
1142 gtMelonPiece: DrawSpriteRotatedF(sprWatermelon, x, y, 1, 0, Gear^.DirAngle); |
1145 gtMelonPiece: DrawSpriteRotatedF(sprWatermelon, x, y, 1, 0, Gear^.DirAngle); |
1143 gtHellishBomb: DrawSpriteRotated(sprHellishBomb, x, y, 0, Gear^.DirAngle); |
1146 gtHellishBomb: DrawSpriteRotated(sprHellishBomb, x, y, 0, Gear^.DirAngle); |
1144 gtBirdy: begin |
1147 gtBirdy: begin |
1145 if Gear^.State and gstAnimation = gstAnimation then |
1148 if Gear^.State and gstAnimation = gstAnimation then |
1203 Tint($FF, $FF, $FF, $FF); |
1206 Tint($FF, $FF, $FF, $FF); |
1204 end; |
1207 end; |
1205 gtNapalmBomb: DrawSpriteRotated(sprNapalmBomb, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); |
1208 gtNapalmBomb: DrawSpriteRotated(sprNapalmBomb, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); |
1206 gtFlake: if Gear^.State and (gstDrowning or gstTmpFlag) <> 0 then |
1209 gtFlake: if Gear^.State and (gstDrowning or gstTmpFlag) <> 0 then |
1207 begin |
1210 begin |
1208 Tint((ExplosionBorderColor shr RShift) and $FF, |
1211 Tint((ExplosionBorderColor shr RShift) and $FF, |
1209 (ExplosionBorderColor shr GShift) and $FF, |
1212 (ExplosionBorderColor shr GShift) and $FF, |
1210 (ExplosionBorderColor shr BShift) and $FF, |
1213 (ExplosionBorderColor shr BShift) and $FF, |
1211 $FF); |
1214 $FF); |
1212 // Needs a nicer white texture to tint |
1215 // Needs a nicer white texture to tint |
1213 DrawTextureRotatedF(SpritesData[sprSnowDust].Texture, 1, 0, 0, x, y, 0, 1, 8, 8, Gear^.DirAngle); |
1216 DrawTextureRotatedF(SpritesData[sprSnowDust].Texture, 1, 0, 0, x, y, 0, 1, 8, 8, Gear^.DirAngle); |
1214 //DrawSpriteRotated(sprSnowDust, x, y, 0, Gear^.DirAngle); |
1217 //DrawSpriteRotated(sprSnowDust, x, y, 0, Gear^.DirAngle); |
1215 //DrawTexture(x, y, SpritesData[sprVampiric].Texture, 0.1); |
1218 //DrawTexture(x, y, SpritesData[sprVampiric].Texture, 0.1); |
1235 //gtStructure: DrawSprite(sprTarget, x - 16, y - 16, 0); |
1238 //gtStructure: DrawSprite(sprTarget, x - 16, y - 16, 0); |
1236 gtTardis: if Gear^.Pos <> 4 then |
1239 gtTardis: if Gear^.Pos <> 4 then |
1237 begin |
1240 begin |
1238 if Gear^.Pos = 2 then |
1241 if Gear^.Pos = 2 then |
1239 Tint(Gear^.Hedgehog^.Team^.Clan^.Color shl 8 or $FF) |
1242 Tint(Gear^.Hedgehog^.Team^.Clan^.Color shl 8 or $FF) |
1240 else |
1243 else |
1241 Tint(Gear^.Hedgehog^.Team^.Clan^.Color shl 8 or max($00, round(Gear^.Power * (1-abs(0.5 - (GameTicks mod 2000) / 2000))))); |
1244 Tint(Gear^.Hedgehog^.Team^.Clan^.Color shl 8 or max($00, round(Gear^.Power * (1-abs(0.5 - (GameTicks mod 2000) / 2000))))); |
1242 DrawSprite(sprTardis, x-24, y-63,0); |
1245 DrawSprite(sprTardis, x-24, y-63,0); |
1243 if Gear^.Pos = 2 then |
1246 if Gear^.Pos = 2 then |
1244 Tint($FF, $FF, $FF, $FF) |
1247 Tint($FF, $FF, $FF, $FF) |
1245 else |
1248 else |
1277 begin |
1280 begin |
1278 DrawLine(Gear^.Target.X, Gear^.Target.Y, hwRound(HHGear^.X), hwRound(HHGear^.Y), 4.0, i, i, $FF, $40); |
1281 DrawLine(Gear^.Target.X, Gear^.Target.Y, hwRound(HHGear^.X), hwRound(HHGear^.Y), 4.0, i, i, $FF, $40); |
1279 end |
1282 end |
1280 else |
1283 else |
1281 begin |
1284 begin |
1282 DrawLine(hwRound(HHGear^.X), hwRound(HHGear^.Y), hwRound(Gear^.X), hwRound(Gear^.Y), 4.0, i, i, $FF, $40); |
1285 DrawLine(hwRound(HHGear^.X), hwRound(HHGear^.Y), hwRound(Gear^.X), hwRound(Gear^.Y), 4.0, i, i, $FF, $40); |
1283 end; |
1286 end; |
1284 end |
1287 end |
1285 end |
1288 end |
1286 end; |
1289 end; |
1287 gtGenericFaller: DrawCircle(x, y, 3, 3, $FF, $00, $00, $FF); // debug |
1290 gtGenericFaller: DrawCircle(x, y, 3, 3, $FF, $00, $00, $FF); // debug |