chore: dump iw5 weapon reload overrides

This commit is contained in:
Jan 2024-04-07 19:58:49 +02:00
parent c1a4874791
commit 7b23461e2a
No known key found for this signature in database
GPG Key ID: 44B581F78FF5C57C
3 changed files with 32 additions and 2 deletions

View File

@ -3963,7 +3963,8 @@ namespace IW5
struct ReloadStateTimerEntry
{
int attachment;
WeaponAttachmentCombination attachment;
short unused;
int reloadAddTime;
int reloadStartAddTime;
};

View File

@ -4,7 +4,6 @@
namespace IW5
{
// WeaponCompleteDef:
// TODO: reloadOverrides
// TODO: notetrackOverrides
// TODO: iFireTimeAkimbo
// TODO: iAltRaiseTimeAkimbo
@ -734,6 +733,7 @@ namespace IW5
{"animOverrides", offsetof(WeaponFullDef, weapCompleteDef.animOverrides), WFT_ANIM_OVERRIDES },
{"soundOverrides", offsetof(WeaponFullDef, weapCompleteDef.soundOverrides), WFT_SOUND_OVERRIDES },
{"fxOverrides", offsetof(WeaponFullDef, weapCompleteDef.fxOverrides), WFT_FX_OVERRIDES },
{"reloadOverrides", offsetof(WeaponFullDef, weapCompleteDef.reloadOverrides), WFT_RELOAD_OVERRIDES },
};
inline const char* szWeapTypeNames[]{

View File

@ -229,6 +229,10 @@ namespace IW5
FillFromFxOverrides(std::string(field.szName));
break;
case WFT_RELOAD_OVERRIDES:
FillFromReloadOverrides(std::string(field.szName));
break;
case WFT_NUM_FIELD_TYPES:
default:
assert(false);
@ -463,6 +467,31 @@ namespace IW5
m_info_string.SetValueForKey(key, ss.str());
}
void FillFromReloadOverrides(const std::string& key)
{
std::stringstream ss;
bool first = true;
for (auto i = 0u; i < m_weapon->weapCompleteDef.numReloadStateTimerOverrides; i++)
{
const auto& reloadOverride = m_weapon->weapCompleteDef.reloadOverrides[i];
if (!first)
ss << "\n";
else
first = false;
if (reloadOverride.attachment.fields)
ss << GetNameForSingleWeaponAttachment(reloadOverride.attachment);
else
ss << "none";
ss << ' ' << reloadOverride.reloadAddTime << ' ' << reloadOverride.reloadStartAddTime;
}
m_info_string.SetValueForKey(key, ss.str());
}
const WeaponFullDef* m_weapon;
};
} // namespace IW5