diff --git a/src/ObjCommon/Game/IW4/InfoStringIW4.cpp b/src/ObjCommon/Game/IW4/InfoStringIW4.cpp index 13576eeb..362e6528 100644 --- a/src/ObjCommon/Game/IW4/InfoStringIW4.cpp +++ b/src/ObjCommon/Game/IW4/InfoStringIW4.cpp @@ -68,7 +68,7 @@ void InfoStringFromStructConverter::FillFromBaseField(const cspField_t& field) const auto* fx = *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset); if (fx) - m_info_string.SetValueForKey(std::string(field.szName), std::string(fx->name)); + m_info_string.SetValueForKey(std::string(field.szName), std::string(AssetName(fx->name))); else m_info_string.SetValueForKey(std::string(field.szName), ""); break; @@ -79,7 +79,7 @@ void InfoStringFromStructConverter::FillFromBaseField(const cspField_t& field) const auto* model = *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset); if (model) - m_info_string.SetValueForKey(std::string(field.szName), std::string(model->name)); + m_info_string.SetValueForKey(std::string(field.szName), std::string(AssetName(model->name))); else m_info_string.SetValueForKey(std::string(field.szName), ""); break; @@ -91,7 +91,7 @@ void InfoStringFromStructConverter::FillFromBaseField(const cspField_t& field) iOffset); if (material) - m_info_string.SetValueForKey(std::string(field.szName), std::string(material->info.name)); + m_info_string.SetValueForKey(std::string(field.szName), std::string(AssetName(material->info.name))); else m_info_string.SetValueForKey(std::string(field.szName), ""); break; @@ -103,7 +103,7 @@ void InfoStringFromStructConverter::FillFromBaseField(const cspField_t& field) iOffset); if (physCollMap) - m_info_string.SetValueForKey(std::string(field.szName), std::string(physCollMap->name)); + m_info_string.SetValueForKey(std::string(field.szName), std::string(AssetName(physCollMap->name))); else m_info_string.SetValueForKey(std::string(field.szName), ""); break; @@ -127,7 +127,7 @@ void InfoStringFromStructConverter::FillFromBaseField(const cspField_t& field) iOffset); if (tracer) - m_info_string.SetValueForKey(std::string(field.szName), std::string(tracer->name)); + m_info_string.SetValueForKey(std::string(field.szName), std::string(AssetName(tracer->name))); else m_info_string.SetValueForKey(std::string(field.szName), ""); break; diff --git a/src/ObjCommon/Game/T6/InfoStringT6.cpp b/src/ObjCommon/Game/T6/InfoStringT6.cpp index 97ae97df..6098fbd7 100644 --- a/src/ObjCommon/Game/T6/InfoStringT6.cpp +++ b/src/ObjCommon/Game/T6/InfoStringT6.cpp @@ -65,7 +65,7 @@ void InfoStringFromStructConverter::FillFromBaseField(const cspField_t& field) const auto* fx = *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset); if (fx) - m_info_string.SetValueForKey(std::string(field.szName), std::string(fx->name)); + m_info_string.SetValueForKey(std::string(field.szName), std::string(AssetName(fx->name))); else m_info_string.SetValueForKey(std::string(field.szName), ""); break; @@ -76,7 +76,7 @@ void InfoStringFromStructConverter::FillFromBaseField(const cspField_t& field) const auto* model = *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset); if (model) - m_info_string.SetValueForKey(std::string(field.szName), std::string(model->name)); + m_info_string.SetValueForKey(std::string(field.szName), std::string(AssetName(model->name))); else m_info_string.SetValueForKey(std::string(field.szName), ""); break; @@ -89,7 +89,7 @@ void InfoStringFromStructConverter::FillFromBaseField(const cspField_t& field) iOffset); if (material) - m_info_string.SetValueForKey(std::string(field.szName), std::string(material->info.name)); + m_info_string.SetValueForKey(std::string(field.szName), std::string(AssetName(material->info.name))); else m_info_string.SetValueForKey(std::string(field.szName), ""); break; @@ -101,7 +101,7 @@ void InfoStringFromStructConverter::FillFromBaseField(const cspField_t& field) iOffset); if (physPreset) - m_info_string.SetValueForKey(std::string(field.szName), std::string(physPreset->name)); + m_info_string.SetValueForKey(std::string(field.szName), std::string(AssetName(physPreset->name))); else m_info_string.SetValueForKey(std::string(field.szName), ""); break; @@ -116,7 +116,7 @@ void InfoStringFromStructConverter::FillFromBaseField(const cspField_t& field) const auto* tracer = *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset); if (tracer) - m_info_string.SetValueForKey(std::string(field.szName), std::string(tracer->name)); + m_info_string.SetValueForKey(std::string(field.szName), std::string(AssetName(tracer->name))); else m_info_string.SetValueForKey(std::string(field.szName), ""); break; diff --git a/src/ObjCommon/Utils/InfoString.cpp b/src/ObjCommon/Utils/InfoString.cpp index 93174869..938e46e9 100644 --- a/src/ObjCommon/Utils/InfoString.cpp +++ b/src/ObjCommon/Utils/InfoString.cpp @@ -144,6 +144,14 @@ InfoString InfoStringFromStructConverterBase::Convert() return std::move(m_info_string); } +const char* InfoStringFromStructConverterBase::AssetName(const char* name) +{ + if (name && name[0] == ',') + return &name[1]; + + return name; +} + void InfoStringFromStructConverterBase::FillFromString(const std::string& key, const size_t offset) { const auto* str = *reinterpret_cast(reinterpret_cast(m_structure) + offset); diff --git a/src/ObjCommon/Utils/InfoString.h b/src/ObjCommon/Utils/InfoString.h index dddbd215..9263944d 100644 --- a/src/ObjCommon/Utils/InfoString.h +++ b/src/ObjCommon/Utils/InfoString.h @@ -54,6 +54,7 @@ protected: const void* m_structure; const std::function m_get_scr_string; + static const char* AssetName(const char* name); void FillFromString(const std::string& key, size_t offset); void FillFromStringBuffer(const std::string& key, size_t offset, size_t bufferSize); void FillFromInt(const std::string& key, size_t offset); diff --git a/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperWeapon.cpp b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperWeapon.cpp index 23596948..6508231e 100644 --- a/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperWeapon.cpp +++ b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperWeapon.cpp @@ -1481,7 +1481,7 @@ namespace T6 .iOffset); if (camo) - m_info_string.SetValueForKey(std::string(field.szName), std::string(camo->name)); + m_info_string.SetValueForKey(std::string(field.szName), std::string(AssetName(camo->name))); else m_info_string.SetValueForKey(std::string(field.szName), ""); break;