diff --git a/src/Common/Game/IW5/IW5_Assets.h b/src/Common/Game/IW5/IW5_Assets.h index de213a72..c62599f6 100644 --- a/src/Common/Game/IW5/IW5_Assets.h +++ b/src/Common/Game/IW5/IW5_Assets.h @@ -3998,8 +3998,8 @@ namespace IW5 XModel* gunXModel[16]; const char* szXAnimsRightHanded[42]; const char* szXAnimsLeftHanded[42]; - uint16_t notetrackSoundMapKeys[16]; - uint16_t notetrackSoundMapValues[16]; + uint16_t notetrackSoundMapKeys[24]; + uint16_t notetrackSoundMapValues[24]; uint16_t notetrackRumbleMapKeys[16]; uint16_t notetrackRumbleMapValues[16]; XModel* worldModel[16]; diff --git a/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperWeapon.cpp b/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperWeapon.cpp index 243e645e..59017ed2 100644 --- a/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperWeapon.cpp +++ b/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperWeapon.cpp @@ -232,42 +232,39 @@ void AssetDumperWeapon::CopyToFullDef(const WeaponCompleteDef* weapon, WeaponFul if (weapon->hideTags) { - assert(sizeof(WeaponFullDef::hideTags) >= sizeof(scr_string_t) * std::extent_v); memcpy(fullDef->hideTags, weapon->hideTags, sizeof(scr_string_t) * std::extent_v); fullDef->weapCompleteDef.hideTags = fullDef->hideTags; } if (weapon->szXAnims) { - assert(sizeof(WeaponFullDef::szXAnims) >= sizeof(void*) * NUM_WEAP_ANIMS); + static_assert(std::extent_v == NUM_WEAP_ANIMS); memcpy(fullDef->szXAnims, weapon->szXAnims, sizeof(void*) * NUM_WEAP_ANIMS); fullDef->weapCompleteDef.szXAnims = fullDef->szXAnims; } if (fullDef->weapDef.gunXModel) { - assert(sizeof(WeaponFullDef::gunXModel) >= sizeof(void*) * std::extent_v); memcpy(fullDef->gunXModel, fullDef->weapDef.gunXModel, sizeof(void*) * std::extent_v); fullDef->weapDef.gunXModel = fullDef->gunXModel; } if (fullDef->weapDef.szXAnimsRightHanded) { - assert(sizeof(WeaponFullDef::szXAnimsRightHanded) >= sizeof(void*) * NUM_WEAP_ANIMS); + static_assert(std::extent_v == NUM_WEAP_ANIMS); memcpy(fullDef->szXAnimsRightHanded, fullDef->weapDef.szXAnimsRightHanded, sizeof(void*) * NUM_WEAP_ANIMS); fullDef->weapDef.szXAnimsRightHanded = fullDef->szXAnimsRightHanded; } if (fullDef->weapDef.szXAnimsLeftHanded) { - assert(sizeof(WeaponFullDef::szXAnimsLeftHanded) >= sizeof(void*) * NUM_WEAP_ANIMS); + static_assert(std::extent_v == NUM_WEAP_ANIMS); memcpy(fullDef->szXAnimsLeftHanded, fullDef->weapDef.szXAnimsLeftHanded, sizeof(void*) * NUM_WEAP_ANIMS); fullDef->weapDef.szXAnimsLeftHanded = fullDef->szXAnimsLeftHanded; } if (fullDef->weapDef.notetrackSoundMapKeys) { - assert(sizeof(WeaponFullDef::notetrackSoundMapKeys) >= sizeof(scr_string_t) * std::extent_v); memcpy(fullDef->notetrackSoundMapKeys, fullDef->weapDef.notetrackSoundMapKeys, sizeof(scr_string_t) * std::extent_v); @@ -276,7 +273,6 @@ void AssetDumperWeapon::CopyToFullDef(const WeaponCompleteDef* weapon, WeaponFul if (fullDef->weapDef.notetrackSoundMapValues) { - assert(sizeof(WeaponFullDef::notetrackSoundMapValues) >= sizeof(scr_string_t) * std::extent_v); memcpy(fullDef->notetrackSoundMapValues, fullDef->weapDef.notetrackSoundMapValues, sizeof(scr_string_t) * std::extent_v); @@ -285,7 +281,6 @@ void AssetDumperWeapon::CopyToFullDef(const WeaponCompleteDef* weapon, WeaponFul if (fullDef->weapDef.notetrackRumbleMapKeys) { - assert(sizeof(WeaponFullDef::notetrackRumbleMapKeys) >= sizeof(scr_string_t) * std::extent_v); memcpy(fullDef->notetrackRumbleMapKeys, fullDef->weapDef.notetrackRumbleMapKeys, sizeof(scr_string_t) * std::extent_v); @@ -294,7 +289,6 @@ void AssetDumperWeapon::CopyToFullDef(const WeaponCompleteDef* weapon, WeaponFul if (fullDef->weapDef.notetrackRumbleMapValues) { - assert(sizeof(WeaponFullDef::notetrackRumbleMapValues) >= sizeof(scr_string_t) * std::extent_v); memcpy(fullDef->notetrackRumbleMapValues, fullDef->weapDef.notetrackRumbleMapValues, sizeof(scr_string_t) * std::extent_v); @@ -303,13 +297,13 @@ void AssetDumperWeapon::CopyToFullDef(const WeaponCompleteDef* weapon, WeaponFul if (fullDef->weapDef.worldModel) { - assert(sizeof(WeaponFullDef::worldModel) >= sizeof(void*) * std::extent_v); memcpy(fullDef->worldModel, fullDef->weapDef.worldModel, sizeof(void*) * std::extent_v); fullDef->weapDef.worldModel = fullDef->worldModel; } if (fullDef->weapDef.parallelBounce) { + static_assert(std::extent_v == SURF_TYPE_NUM); 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; @@ -317,6 +311,7 @@ void AssetDumperWeapon::CopyToFullDef(const WeaponCompleteDef* weapon, WeaponFul if (fullDef->weapDef.perpendicularBounce) { + static_assert(std::extent_v == SURF_TYPE_NUM); 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; @@ -324,6 +319,7 @@ void AssetDumperWeapon::CopyToFullDef(const WeaponCompleteDef* weapon, WeaponFul if (fullDef->weapDef.locationDamageMultipliers) { + static_assert(std::extent_v == HITLOC_NUM); assert(sizeof(WeaponFullDef::locationDamageMultipliers) >= sizeof(float) * std::extent_v); memcpy(fullDef->locationDamageMultipliers, fullDef->weapDef.locationDamageMultipliers, diff --git a/src/ZoneCode/Game/IW4/XAssets/WeaponCompleteDef.txt b/src/ZoneCode/Game/IW4/XAssets/WeaponCompleteDef.txt index 17164c84..51d9a0c2 100644 --- a/src/ZoneCode/Game/IW4/XAssets/WeaponCompleteDef.txt +++ b/src/ZoneCode/Game/IW4/XAssets/WeaponCompleteDef.txt @@ -46,16 +46,16 @@ set reusable notetrackRumbleMapValues; set scriptstring notetrackRumbleMapValues; set count notetrackRumbleMapValues 16; set reusable bounceSound; -set count bounceSound 31; +set count bounceSound SURF_TYPE_NUM; set reusable worldModel; set count worldModel 16; set string szAmmoName; set string szClipName; set string szSharedAmmoCapName; set reusable parallelBounce; -set count parallelBounce 31; +set count parallelBounce SURF_TYPE_NUM; set reusable perpendicularBounce; -set count perpendicularBounce 31; +set count perpendicularBounce SURF_TYPE_NUM; set string accuracyGraphName0; set string accuracyGraphName1; set reusable originalAccuracyGraphKnots0; diff --git a/src/ZoneCode/Game/IW5/XAssets/WeaponCompleteDef.txt b/src/ZoneCode/Game/IW5/XAssets/WeaponCompleteDef.txt index 7d37e025..120dcda9 100644 --- a/src/ZoneCode/Game/IW5/XAssets/WeaponCompleteDef.txt +++ b/src/ZoneCode/Game/IW5/XAssets/WeaponCompleteDef.txt @@ -76,18 +76,18 @@ set reusable notetrackRumbleMapValues; set scriptstring notetrackRumbleMapValues; set count notetrackRumbleMapValues 16; set reusable bounceSound; -set count bounceSound 31; +set count bounceSound SURF_TYPE_NUM; set reusable rollingSound; -set count rollingSound 31; +set count rollingSound SURF_TYPE_NUM; set reusable worldModel; set count worldModel 16; set string szAmmoName; set string szClipName; set string szSharedAmmoCapName; set reusable parallelBounce; -set count parallelBounce 31; +set count parallelBounce SURF_TYPE_NUM; set reusable perpendicularBounce; -set count perpendicularBounce 31; +set count perpendicularBounce SURF_TYPE_NUM; set string accuracyGraphName0; set string accuracyGraphName1; set reusable originalAccuracyGraphKnots0;