From c1a487479171c3ba5257638e9b11c78c420970bc Mon Sep 17 00:00:00 2001 From: Jan Date: Sun, 7 Apr 2024 15:09:51 +0200 Subject: [PATCH] =?UTF-8?q?=EF=BB=BFchore:=20add=20static=20assertions=20f?= =?UTF-8?q?or=20weapon=20field=20names?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Common/Game/IW5/IW5_Assets.h | 26 +++++++++---------- .../Game/IW5/InfoString/WeaponFields.h | 20 ++++++++++++++ .../IW5/AssetDumpers/AssetDumperWeapon.cpp | 4 +-- .../Game/IW5/XAssets/WeaponCompleteDef.txt | 8 +++--- 4 files changed, 39 insertions(+), 19 deletions(-) diff --git a/src/Common/Game/IW5/IW5_Assets.h b/src/Common/Game/IW5/IW5_Assets.h index 8084e044..bc2892f5 100644 --- a/src/Common/Game/IW5/IW5_Assets.h +++ b/src/Common/Game/IW5/IW5_Assets.h @@ -2852,7 +2852,7 @@ namespace IW5 WEAPTYPE_PROJECTILE = 0x3, WEAPTYPE_RIOTSHIELD = 0x4, - WEAPTYPE_NUM + WEAPTYPE_COUNT }; enum weapClass_t @@ -2870,7 +2870,7 @@ namespace IW5 WEAPCLASS_NON_PLAYER = 0xA, WEAPCLASS_ITEM = 0xB, - WEAPCLASS_NUM + WEAPCLASS_COUNT }; enum PenetrateType @@ -2909,9 +2909,7 @@ namespace IW5 WEAPON_FIRETYPE_BURSTFIRE4 = 0x4, WEAPON_FIRETYPE_DOUBLEBARREL = 0x5, - WEAPON_FIRETYPECOUNT, - WEAPON_FIRETYPE_BURSTFIRE_FIRST = WEAPON_FIRETYPE_BURSTFIRE2, - WEAPON_FIRETYPE_BURSTFIRE_LAST = WEAPON_FIRETYPE_BURSTFIRE4 + WEAPON_FIRETYPE_COUNT }; struct AttAmmoGeneral @@ -3099,7 +3097,7 @@ namespace IW5 WEAPOVERLAYRETICLE_NONE = 0x0, WEAPOVERLAYRETICLE_CROSSHAIR = 0x1, - WEAPOVERLAYRETICLE_NUM + WEAPOVERLAYRETICLE_COUNT }; struct ADSOverlay @@ -3168,7 +3166,7 @@ namespace IW5 WEAPPROJEXP_SMOKE = 0x5, WEAPPROJEXP_HEAVY = 0x6, - WEAPPROJEXP_NUM + WEAPPROJEXP_COUNT }; struct snd_alias_list_name @@ -3266,7 +3264,7 @@ namespace IW5 WEAPINVENTORY_EXCLUSIVE = 0x4, WEAPINVENTORY_SCAVENGER = 0x5, - WEAPINVENTORYCOUNT + WEAPINVENTORY_COUNT }; enum OffhandClass @@ -3287,7 +3285,7 @@ namespace IW5 WEAPSTANCE_DUCK = 0x1, WEAPSTANCE_PRONE = 0x2, - WEAPSTANCE_NUM + WEAPSTANCE_COUNT }; enum activeReticleType_t @@ -3358,7 +3356,7 @@ namespace IW5 WEAPOVERLAYINTERFACE_JAVELIN = 0x1, WEAPOVERLAYINTERFACE_TURRETSCOPE = 0x2, - WEAPOVERLAYINTERFACECOUNT + WEAPOVERLAYINTERFACE_COUNT }; enum WeapStickinessType @@ -3491,7 +3489,7 @@ namespace IW5 SURF_TYPE_RIOT_SHIELD, SURF_TYPE_SLUSH, - SURF_TYPE_NUM + SURF_TYPE_COUNT }; struct WeaponDef @@ -4524,7 +4522,8 @@ namespace IW5 VEH_SNOWMOBILE = 0x6, VEH_SUBMARINE = 0x7, VEH_UGV = 0x8, - VEH_TYPE_COUNT = 0x9 + + VEH_TYPE_COUNT }; enum VehicleAxleType @@ -4532,7 +4531,8 @@ namespace IW5 VEH_AXLE_FRONT = 0x0, VEH_AXLE_REAR = 0x1, VEH_AXLE_ALL = 0x2, - VEH_AXLE_COUNT = 0x3 + + VEH_AXLE_COUNT }; enum VehCamZOffsetMode diff --git a/src/ObjCommon/Game/IW5/InfoString/WeaponFields.h b/src/ObjCommon/Game/IW5/InfoString/WeaponFields.h index 1d762862..b4171233 100644 --- a/src/ObjCommon/Game/IW5/InfoString/WeaponFields.h +++ b/src/ObjCommon/Game/IW5/InfoString/WeaponFields.h @@ -743,6 +743,7 @@ namespace IW5 "projectile", "riotshield", }; + static_assert(std::extent_v == WEAPTYPE_COUNT); inline const char* szWeapClassNames[]{ "rifle", @@ -758,11 +759,13 @@ namespace IW5 "non-player", "item", }; + static_assert(std::extent_v == WEAPCLASS_COUNT); inline const char* szWeapOverlayReticleNames[]{ "none", "crosshair", }; + static_assert(std::extent_v == WEAPOVERLAYRETICLE_COUNT); inline const char* szWeapInventoryTypeNames[]{ "primary", @@ -772,6 +775,7 @@ namespace IW5 "exclusive", "scavenger", }; + static_assert(std::extent_v == WEAPINVENTORY_COUNT); inline const char* szWeapFireTypeNames[]{ "Full Auto", @@ -781,6 +785,7 @@ namespace IW5 "4-Round Burst", "Double Barrel", }; + static_assert(std::extent_v == WEAPON_FIRETYPE_COUNT); inline const char* penetrateTypeNames[]{ "none", @@ -788,6 +793,7 @@ namespace IW5 "medium", "large", }; + static_assert(std::extent_v == PENETRATE_TYPE_COUNT); inline const char* impactTypeNames[]{ "none", @@ -802,12 +808,14 @@ namespace IW5 "rocket_explode", "projectile_dud", }; + static_assert(std::extent_v == IMPACT_TYPE_COUNT); inline const char* szWeapStanceNames[]{ "stand", "duck", "prone", }; + static_assert(std::extent_v == WEAPSTANCE_COUNT); inline const char* szProjectileExplosionNames[]{ "grenade", @@ -818,6 +826,7 @@ namespace IW5 "smoke", "heavy explosive", }; + static_assert(std::extent_v == WEAPPROJEXP_COUNT); inline const char* offhandClassNames[]{ "None", @@ -827,6 +836,7 @@ namespace IW5 "Throwing Knife", "Other", }; + static_assert(std::extent_v == OFFHAND_CLASS_COUNT); inline const char* playerAnimTypeNames[]{ "none", @@ -854,6 +864,7 @@ namespace IW5 "Pip-On-A-Stick", "Bouncing diamond", }; + static_assert(std::extent_v == VEH_ACTIVE_RETICLE_COUNT); inline const char* guidedMissileNames[]{ "None", @@ -861,6 +872,7 @@ namespace IW5 "Hellfire", "Javelin", }; + static_assert(std::extent_v == MISSILE_GUIDANCE_COUNT); inline const char* stickinessNames[]{ "Don't stick", @@ -870,12 +882,14 @@ namespace IW5 "Stick to ground, maintain yaw", "Knife", }; + static_assert(std::extent_v == WEAPSTICKINESS_COUNT); inline const char* overlayInterfaceNames[]{ "None", "Javelin", "Turret Scope", }; + static_assert(std::extent_v == WEAPOVERLAYINTERFACE_COUNT); inline const char* ammoCounterClipNames[]{ "None", @@ -886,12 +900,14 @@ namespace IW5 "Beltfed", "AltWeapon", }; + static_assert(std::extent_v == AMMO_COUNTER_CLIP_COUNT); inline const char* weapIconRatioNames[]{ "1:1", "2:1", "4:1", }; + static_assert(std::extent_v == WEAPON_ICON_RATIO_COUNT); inline const char* s_vehicleClassNames[]{ "4 wheel", @@ -901,13 +917,17 @@ namespace IW5 "artillery", "helicopter", "snowmobile", + "submarine", + "ugv", }; + static_assert(std::extent_v == VEH_TYPE_COUNT); inline const char* s_vehicleAxleTypeNames[]{ "front", "rear", "all", }; + static_assert(std::extent_v == VEH_AXLE_COUNT); inline const char* bounceSoundSuffixes[]{ "_default", "_bark", "_brick", "_carpet", "_cloth", "_concrete", "_dirt", "_flesh", "_foliage", "_glass", "_grass", diff --git a/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperWeapon.cpp b/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperWeapon.cpp index 9599b95d..a762d23f 100644 --- a/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperWeapon.cpp +++ b/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperWeapon.cpp @@ -550,7 +550,7 @@ void AssetDumperWeapon::CopyToFullDef(const WeaponCompleteDef* weapon, WeaponFul if (fullDef->weapDef.parallelBounce) { - static_assert(std::extent_v == SURF_TYPE_NUM); + static_assert(std::extent_v == SURF_TYPE_COUNT); assert(sizeof(WeaponFullDef::parallelBounce) >= sizeof(float) * std::extent_v); memcpy(fullDef->parallelBounce, fullDef->weapDef.parallelBounce, sizeof(float) * std::extent_v); fullDef->weapDef.parallelBounce = fullDef->parallelBounce; @@ -558,7 +558,7 @@ void AssetDumperWeapon::CopyToFullDef(const WeaponCompleteDef* weapon, WeaponFul if (fullDef->weapDef.perpendicularBounce) { - static_assert(std::extent_v == SURF_TYPE_NUM); + static_assert(std::extent_v == SURF_TYPE_COUNT); assert(sizeof(WeaponFullDef::perpendicularBounce) >= sizeof(float) * std::extent_v); memcpy(fullDef->perpendicularBounce, fullDef->weapDef.perpendicularBounce, sizeof(float) * std::extent_v); fullDef->weapDef.perpendicularBounce = fullDef->perpendicularBounce; diff --git a/src/ZoneCode/Game/IW5/XAssets/WeaponCompleteDef.txt b/src/ZoneCode/Game/IW5/XAssets/WeaponCompleteDef.txt index 87af2e94..fef404d0 100644 --- a/src/ZoneCode/Game/IW5/XAssets/WeaponCompleteDef.txt +++ b/src/ZoneCode/Game/IW5/XAssets/WeaponCompleteDef.txt @@ -78,18 +78,18 @@ set reusable notetrackRumbleMapValues; set scriptstring notetrackRumbleMapValues; set count notetrackRumbleMapValues 16; set reusable bounceSound; -set count bounceSound SURF_TYPE_NUM; +set count bounceSound SURF_TYPE_COUNT; set reusable rollingSound; -set count rollingSound SURF_TYPE_NUM; +set count rollingSound SURF_TYPE_COUNT; set reusable worldModel; set count worldModel 16; set string szAmmoName; set string szClipName; set string szSharedAmmoCapName; set reusable parallelBounce; -set count parallelBounce SURF_TYPE_NUM; +set count parallelBounce SURF_TYPE_COUNT; set reusable perpendicularBounce; -set count perpendicularBounce SURF_TYPE_NUM; +set count perpendicularBounce SURF_TYPE_COUNT; set string accuracyGraphName0; set string accuracyGraphName1; set reusable originalAccuracyGraphKnots0;