chore: fix loading and writing code for IW4

This commit is contained in:
Jan 2024-12-28 10:28:29 +01:00
parent a5873a301f
commit 9ae5aaa1db
No known key found for this signature in database
GPG Key ID: 44B581F78FF5C57C
10 changed files with 77 additions and 69 deletions

View File

@ -1,4 +1,5 @@
#include "AssetLoaderLeaderboardIW4.h" #include "LoaderLeaderboardIW4.h"
#include "Game/IW4/IW4.h" #include "Game/IW4/IW4.h"
#include "JsonLeaderboardDefLoader.h" #include "JsonLeaderboardDefLoader.h"

View File

@ -1,4 +1,5 @@
#include "AssetLoaderLocalizeIW4.h" #include "LoaderLocalizeIW4.h"
#include "Localize/CommonLocalizeLoader.h" #include "Localize/CommonLocalizeLoader.h"
using namespace IW4; using namespace IW4;

View File

@ -1,6 +1,5 @@
#include "LoaderMaterialIW4.h" #include "LoaderMaterialIW4.h"
#include "AssetLoaderTechniqueSet.h"
#include "AssetLoading/AbstractGdtEntryReader.h" #include "AssetLoading/AbstractGdtEntryReader.h"
#include "Game/IW4/CommonIW4.h" #include "Game/IW4/CommonIW4.h"
#include "Game/IW4/IW4.h" #include "Game/IW4/IW4.h"
@ -1321,7 +1320,12 @@ namespace
class MaterialLoader final : public AssetCreator<AssetMaterial> class MaterialLoader final : public AssetCreator<AssetMaterial>
{ {
public: public:
MaterialLoader(MemoryManager& memory, ISearchPath& searchPath); MaterialLoader(MemoryManager& memory, ISearchPath& searchPath, IGdtQueryable& gdt)
: m_memory(memory),
m_search_path(m_search_path),
m_gdt(gdt)
{
}
AssetCreationResult CreateAsset(const std::string& assetName, AssetCreationContext& context) override AssetCreationResult CreateAsset(const std::string& assetName, AssetCreationContext& context) override
{ {

View File

@ -1,4 +1,5 @@
#include "AssetLoaderMenuListIW4.h" #include "LoaderMenuListIW4.h"
#include "Game/IW4/IW4.h" #include "Game/IW4/IW4.h"
#include "Game/IW4/Menu/MenuConversionZoneStateIW4.h" #include "Game/IW4/Menu/MenuConversionZoneStateIW4.h"
#include "Game/IW4/Menu/MenuConverterIW4.h" #include "Game/IW4/Menu/MenuConverterIW4.h"

View File

@ -423,7 +423,7 @@ namespace
ConvertExpressionEntry(statement, expressionEntries, expression, menu, item); ConvertExpressionEntry(statement, expressionEntries, expression, menu, item);
auto* outputExpressionEntries = m_memory.Alloc<expressionEntry>(expressionEntries.size()); auto* outputExpressionEntries = m_memory.Alloc<expressionEntry>(expressionEntries.size());
memcpy(outputExpressionEntries, expressionEntries.data(), sizeof(expressionEntry) * expressionEntries.size()); std::memcpy(outputExpressionEntries, expressionEntries.data(), sizeof(expressionEntry) * expressionEntries.size());
statement->entries = outputExpressionEntries; statement->entries = outputExpressionEntries;
statement->numEntries = static_cast<int>(expressionEntries.size()); statement->numEntries = static_cast<int>(expressionEntries.size());
@ -431,7 +431,7 @@ namespace
return statement; return statement;
} }
_NODISCARD Statement_s* ConvertOrApplyStatement(float& staticValue, [[nodiscard]] Statement_s* ConvertOrApplyStatement(float& staticValue,
const ISimpleExpression* expression, const ISimpleExpression* expression,
const CommonMenuDef* menu, const CommonMenuDef* menu,
const CommonItemDef* item = nullptr) const const CommonItemDef* item = nullptr) const
@ -462,7 +462,7 @@ namespace
return ConvertExpression(expression, menu, item); return ConvertExpression(expression, menu, item);
} }
_NODISCARD Statement_s* ConvertOrApplyStatement(const char*& staticValue, [[nodiscard]] Statement_s* ConvertOrApplyStatement(const char*& staticValue,
const ISimpleExpression* expression, const ISimpleExpression* expression,
const CommonMenuDef* menu, const CommonMenuDef* menu,
const CommonItemDef* item = nullptr) const const CommonItemDef* item = nullptr) const
@ -492,7 +492,7 @@ namespace
return ConvertExpression(expression, menu, item); return ConvertExpression(expression, menu, item);
} }
_NODISCARD Statement_s* ConvertOrApplyStatement(Material*& staticValue, [[nodiscard]] Statement_s* ConvertOrApplyStatement(Material*& staticValue,
const ISimpleExpression* expression, const ISimpleExpression* expression,
const CommonMenuDef* menu, const CommonMenuDef* menu,
const CommonItemDef* item = nullptr) const const CommonItemDef* item = nullptr) const
@ -522,7 +522,7 @@ namespace
return ConvertExpression(expression, menu, item); return ConvertExpression(expression, menu, item);
} }
_NODISCARD Statement_s* ConvertVisibleExpression(windowDef_t* window, [[nodiscard]] Statement_s* ConvertVisibleExpression(windowDef_t* window,
const ISimpleExpression* expression, const ISimpleExpression* expression,
const CommonMenuDef* commonMenu, const CommonMenuDef* commonMenu,
const CommonItemDef* commonItem = nullptr) const const CommonItemDef* commonItem = nullptr) const
@ -556,7 +556,7 @@ namespace
return ConvertExpression(expression, commonMenu, commonItem); return ConvertExpression(expression, commonMenu, commonItem);
} }
_NODISCARD static EventType SetLocalVarTypeToEventType(const SetLocalVarType setLocalVarType) [[nodiscard]] static EventType SetLocalVarTypeToEventType(const SetLocalVarType setLocalVarType)
{ {
switch (setLocalVarType) switch (setLocalVarType)
{ {
@ -593,7 +593,7 @@ namespace
outputSetLocalVar->localVarName = m_memory.Dup(setLocalVar->m_var_name.c_str()); outputSetLocalVar->localVarName = m_memory.Dup(setLocalVar->m_var_name.c_str());
outputSetLocalVar->expression = ConvertExpression(setLocalVar->m_value.get(), menu, item); outputSetLocalVar->expression = ConvertExpression(setLocalVar->m_value.get(), menu, item);
elements.push_back(outputHandler); elements.emplace_back(outputHandler);
} }
void ConvertEventHandlerScript(std::vector<MenuEventHandler*>& elements, const CommonEventHandlerScript* script) const void ConvertEventHandlerScript(std::vector<MenuEventHandler*>& elements, const CommonEventHandlerScript* script) const
@ -606,7 +606,7 @@ namespace
outputHandler->eventType = EVENT_UNCONDITIONAL; outputHandler->eventType = EVENT_UNCONDITIONAL;
outputHandler->eventData.unconditionalScript = m_memory.Dup(script->m_script.c_str()); outputHandler->eventData.unconditionalScript = m_memory.Dup(script->m_script.c_str());
elements.push_back(outputHandler); elements.emplace_back(outputHandler);
} }
void ConvertEventHandlerCondition(std::vector<MenuEventHandler*>& elements, void ConvertEventHandlerCondition(std::vector<MenuEventHandler*>& elements,
@ -685,7 +685,7 @@ namespace
ConvertEventHandler(elements, element.get(), menu, item); ConvertEventHandler(elements, element.get(), menu, item);
} }
_NODISCARD MenuEventHandlerSet* [[nodiscard]] MenuEventHandlerSet*
ConvertEventHandlerSet(const CommonEventHandlerSet* eventHandlerSet, const CommonMenuDef* menu, const CommonItemDef* item = nullptr) const ConvertEventHandlerSet(const CommonEventHandlerSet* eventHandlerSet, const CommonMenuDef* menu, const CommonItemDef* item = nullptr) const
{ {
if (!eventHandlerSet) if (!eventHandlerSet)
@ -707,7 +707,7 @@ namespace
return outputSet; return outputSet;
} }
_NODISCARD ItemKeyHandler* ConvertKeyHandler(const std::multimap<int, std::unique_ptr<CommonEventHandlerSet>>& keyHandlers, [[nodiscard]] ItemKeyHandler* ConvertKeyHandler(const std::multimap<int, std::unique_ptr<CommonEventHandlerSet>>& keyHandlers,
const CommonMenuDef* menu, const CommonMenuDef* menu,
const CommonItemDef* item = nullptr) const const CommonItemDef* item = nullptr) const
{ {
@ -844,7 +844,7 @@ namespace
return floatExpressions; return floatExpressions;
} }
_NODISCARD const char* CreateEnableDvarString(const std::vector<std::string>& stringElements) const [[nodiscard]] const char* CreateEnableDvarString(const std::vector<std::string>& stringElements) const
{ {
std::ostringstream ss; std::ostringstream ss;
@ -856,7 +856,7 @@ namespace
return m_memory.Dup(ss.str().c_str()); return m_memory.Dup(ss.str().c_str());
} }
_NODISCARD const char* ConvertEnableDvar(const CommonItemDef& commonItem, int& dvarFlags) const [[nodiscard]] const char* ConvertEnableDvar(const CommonItemDef& commonItem, int& dvarFlags) const
{ {
dvarFlags = 0; dvarFlags = 0;
@ -893,7 +893,7 @@ namespace
return nullptr; return nullptr;
} }
_NODISCARD listBoxDef_s* ConvertListBoxFeatures(itemDef_s* item, [[nodiscard]] listBoxDef_s* ConvertListBoxFeatures(itemDef_s* item,
CommonItemFeaturesListBox* commonListBox, CommonItemFeaturesListBox* commonListBox,
const CommonMenuDef& parentMenu, const CommonMenuDef& parentMenu,
const CommonItemDef& commonItem) const const CommonItemDef& commonItem) const
@ -928,7 +928,7 @@ namespace
return listBox; return listBox;
} }
_NODISCARD editFieldDef_s* ConvertEditFieldFeatures(itemDef_s* item, [[nodiscard]] editFieldDef_s* ConvertEditFieldFeatures(itemDef_s* item,
CommonItemFeaturesEditField* commonEditField, CommonItemFeaturesEditField* commonEditField,
const CommonMenuDef& parentMenu, const CommonMenuDef& parentMenu,
const CommonItemDef& commonItem) const const CommonItemDef& commonItem) const
@ -948,7 +948,7 @@ namespace
return editField; return editField;
} }
_NODISCARD multiDef_s* ConvertMultiValueFeatures(itemDef_s* item, [[nodiscard]] multiDef_s* ConvertMultiValueFeatures(itemDef_s* item,
CommonItemFeaturesMultiValue* commonMultiValue, CommonItemFeaturesMultiValue* commonMultiValue,
const CommonMenuDef& parentMenu, const CommonMenuDef& parentMenu,
const CommonItemDef& commonItem) const const CommonItemDef& commonItem) const
@ -979,7 +979,7 @@ namespace
return multiValue; return multiValue;
} }
_NODISCARD newsTickerDef_s* ConvertNewsTickerFeatures(itemDef_s* item, [[nodiscard]] newsTickerDef_s* ConvertNewsTickerFeatures(itemDef_s* item,
CommonItemFeaturesNewsTicker* commonNewsTicker, CommonItemFeaturesNewsTicker* commonNewsTicker,
const CommonMenuDef& parentMenu, const CommonMenuDef& parentMenu,
const CommonItemDef& commonItem) const const CommonItemDef& commonItem) const
@ -995,7 +995,7 @@ namespace
return newsTicker; return newsTicker;
} }
_NODISCARD itemDef_s* ConvertItem(const CommonMenuDef& parentMenu, const CommonItemDef& commonItem) const [[nodiscard]] itemDef_s* ConvertItem(const CommonMenuDef& parentMenu, const CommonItemDef& commonItem) const
{ {
auto* item = m_memory.Alloc<itemDef_s>(); auto* item = m_memory.Alloc<itemDef_s>();

View File

@ -1,4 +1,5 @@
#include "AssetLoaderRawFileIW4.h" #include "LoaderRawFileIW4.h"
#include "Game/IW4/IW4.h" #include "Game/IW4/IW4.h"
#include <cstring> #include <cstring>

View File

@ -238,29 +238,29 @@ namespace
} }
}; };
void InitWeaponFullDef(WeaponFullDef* weapon) void InitWeaponFullDef(WeaponFullDef& weapon)
{ {
weapon->weapCompleteDef.weapDef = &weapon->weapDef; weapon.weapCompleteDef.weapDef = &weapon.weapDef;
weapon->weapCompleteDef.hideTags = weapon->hideTags; weapon.weapCompleteDef.hideTags = weapon.hideTags;
weapon->weapCompleteDef.szXAnims = weapon->szXAnims; weapon.weapCompleteDef.szXAnims = weapon.szXAnims;
weapon->weapDef.gunXModel = weapon->gunXModel; weapon.weapDef.gunXModel = weapon.gunXModel;
weapon->weapDef.szXAnimsRightHanded = weapon->szXAnimsRightHanded; weapon.weapDef.szXAnimsRightHanded = weapon.szXAnimsRightHanded;
weapon->weapDef.szXAnimsLeftHanded = weapon->szXAnimsLeftHanded; weapon.weapDef.szXAnimsLeftHanded = weapon.szXAnimsLeftHanded;
weapon->weapDef.notetrackSoundMapKeys = weapon->notetrackSoundMapKeys; weapon.weapDef.notetrackSoundMapKeys = weapon.notetrackSoundMapKeys;
weapon->weapDef.notetrackSoundMapValues = weapon->notetrackSoundMapValues; weapon.weapDef.notetrackSoundMapValues = weapon.notetrackSoundMapValues;
weapon->weapDef.notetrackRumbleMapKeys = weapon->notetrackRumbleMapKeys; weapon.weapDef.notetrackRumbleMapKeys = weapon.notetrackRumbleMapKeys;
weapon->weapDef.notetrackRumbleMapValues = weapon->notetrackRumbleMapValues; weapon.weapDef.notetrackRumbleMapValues = weapon.notetrackRumbleMapValues;
weapon->weapDef.worldModel = weapon->worldModel; weapon.weapDef.worldModel = weapon.worldModel;
weapon->weapDef.parallelBounce = weapon->parallelBounce; weapon.weapDef.parallelBounce = weapon.parallelBounce;
weapon->weapDef.perpendicularBounce = weapon->perpendicularBounce; weapon.weapDef.perpendicularBounce = weapon.perpendicularBounce;
weapon->weapDef.locationDamageMultipliers = weapon->locationDamageMultipliers; weapon.weapDef.locationDamageMultipliers = weapon.locationDamageMultipliers;
for (const auto& field : weapon_fields) for (const auto& field : weapon_fields)
{ {
if (field.iFieldType != CSPFT_STRING) if (field.iFieldType != CSPFT_STRING)
continue; continue;
*reinterpret_cast<const char**>(reinterpret_cast<char*>(weapon) + field.iOffset) = ""; *reinterpret_cast<const char**>(reinterpret_cast<char*>(&weapon) + field.iOffset) = "";
} }
} }
@ -437,7 +437,7 @@ AssetCreationResult InfoStringLoaderWeapon::CreateAsset(const std::string& asset
{ {
auto* weaponFullDef = m_memory.Alloc<WeaponFullDef>(); auto* weaponFullDef = m_memory.Alloc<WeaponFullDef>();
InitWeaponFullDef(weaponFullDef); InitWeaponFullDef(*weaponFullDef);
weaponFullDef->weapCompleteDef.szInternalName = m_memory.Dup(assetName.c_str()); weaponFullDef->weapCompleteDef.szInternalName = m_memory.Dup(assetName.c_str());
AssetRegistration<AssetWeapon> registration(assetName, &weaponFullDef->weapCompleteDef); AssetRegistration<AssetWeapon> registration(assetName, &weaponFullDef->weapCompleteDef);

View File

@ -2,8 +2,8 @@
#include "Game/IW4/CommonIW4.h" #include "Game/IW4/CommonIW4.h"
#include "Game/IW4/InfoString/InfoStringFromStructConverter.h" #include "Game/IW4/InfoString/InfoStringFromStructConverter.h"
#include "Game/IW4/InfoString/TracerFields.h"
#include "Game/IW4/ObjConstantsIW4.h" #include "Game/IW4/ObjConstantsIW4.h"
#include "Game/IW4/Tracer/TracerFields.h"
#include <cassert> #include <cassert>
#include <sstream> #include <sstream>

View File

@ -3,8 +3,8 @@
#include "Game/IW4/CommonIW4.h" #include "Game/IW4/CommonIW4.h"
#include "Game/IW4/InfoString/EnumStrings.h" #include "Game/IW4/InfoString/EnumStrings.h"
#include "Game/IW4/InfoString/InfoStringFromStructConverter.h" #include "Game/IW4/InfoString/InfoStringFromStructConverter.h"
#include "Game/IW4/InfoString/VehicleFields.h"
#include "Game/IW4/ObjConstantsIW4.h" #include "Game/IW4/ObjConstantsIW4.h"
#include "Game/IW4/Vehicle/VehicleFields.h"
#include <cassert> #include <cassert>
#include <sstream> #include <sstream>

View File

@ -3,8 +3,8 @@
#include "Game/IW4/CommonIW4.h" #include "Game/IW4/CommonIW4.h"
#include "Game/IW4/InfoString/EnumStrings.h" #include "Game/IW4/InfoString/EnumStrings.h"
#include "Game/IW4/InfoString/InfoStringFromStructConverter.h" #include "Game/IW4/InfoString/InfoStringFromStructConverter.h"
#include "Game/IW4/InfoString/WeaponFields.h"
#include "Game/IW4/ObjConstantsIW4.h" #include "Game/IW4/ObjConstantsIW4.h"
#include "Game/IW4/Weapon/WeaponFields.h"
#include "Weapon/AccuracyGraphWriter.h" #include "Weapon/AccuracyGraphWriter.h"
#include <cassert> #include <cassert>