chore: dump iw5 weapon notetrack overrides

This commit is contained in:
Jan 2024-04-07 20:17:23 +02:00
parent 7b23461e2a
commit cca67ebafa
No known key found for this signature in database
GPG Key ID: 44B581F78FF5C57C
4 changed files with 42 additions and 3 deletions

View File

@ -120,7 +120,7 @@ namespace IW5
WFT_SOUND_OVERRIDES,
WFT_FX_OVERRIDES,
WFT_RELOAD_OVERRIDES,
WFT_NOTE_TRACK_OVERRIDES,
WFT_NOTETRACK_OVERRIDES,
WFT_NUM_FIELD_TYPES,
};

View File

@ -3971,7 +3971,8 @@ namespace IW5
struct NoteTrackToSoundEntry
{
int attachment;
WeaponAttachmentCombination attachment;
short unused;
ScriptString* notetrackSoundMapKeys;
ScriptString* notetrackSoundMapValues;
};

View File

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

View File

@ -233,6 +233,10 @@ namespace IW5
FillFromReloadOverrides(std::string(field.szName));
break;
case WFT_NOTETRACK_OVERRIDES:
FillFromNoteTrackOverrides(std::string(field.szName));
break;
case WFT_NUM_FIELD_TYPES:
default:
assert(false);
@ -492,6 +496,40 @@ namespace IW5
m_info_string.SetValueForKey(key, ss.str());
}
void FillFromNoteTrackOverrides(const std::string& key)
{
std::stringstream ss;
bool first = true;
for (auto i = 0u; i < m_weapon->weapCompleteDef.numNotetrackOverrides; i++)
{
const auto& noteTrackOverrides = m_weapon->weapCompleteDef.notetrackOverrides[i];
assert(noteTrackOverrides.notetrackSoundMapKeys || noteTrackOverrides.notetrackSoundMapValues);
if (!noteTrackOverrides.notetrackSoundMapKeys || !noteTrackOverrides.notetrackSoundMapValues)
continue;
const auto attachmentName = noteTrackOverrides.attachment.fields ? GetNameForSingleWeaponAttachment(noteTrackOverrides.attachment) : "none";
for (auto j = 0u; j < 24u; j++)
{
const auto& noteTrackKey = m_get_scr_string(noteTrackOverrides.notetrackSoundMapKeys[j]);
const auto& noteTrackValue = m_get_scr_string(noteTrackOverrides.notetrackSoundMapValues[j]);
if (noteTrackKey.empty() || noteTrackValue.empty())
continue;
if (!first)
ss << "\n";
else
first = false;
ss << attachmentName << ' ' << noteTrackKey << ' ' << noteTrackValue;
}
}
m_info_string.SetValueForKey(key, ss.str());
}
const WeaponFullDef* m_weapon;
};
} // namespace IW5