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 "JsonLeaderboardDefLoader.h"

View File

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

View File

@ -1,6 +1,5 @@
#include "LoaderMaterialIW4.h"
#include "AssetLoaderTechniqueSet.h"
#include "AssetLoading/AbstractGdtEntryReader.h"
#include "Game/IW4/CommonIW4.h"
#include "Game/IW4/IW4.h"
@ -1321,7 +1320,12 @@ namespace
class MaterialLoader final : public AssetCreator<AssetMaterial>
{
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
{

View File

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

View File

@ -423,7 +423,7 @@ namespace
ConvertExpressionEntry(statement, expressionEntries, expression, menu, item);
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->numEntries = static_cast<int>(expressionEntries.size());
@ -431,7 +431,7 @@ namespace
return statement;
}
_NODISCARD Statement_s* ConvertOrApplyStatement(float& staticValue,
[[nodiscard]] Statement_s* ConvertOrApplyStatement(float& staticValue,
const ISimpleExpression* expression,
const CommonMenuDef* menu,
const CommonItemDef* item = nullptr) const
@ -462,7 +462,7 @@ namespace
return ConvertExpression(expression, menu, item);
}
_NODISCARD Statement_s* ConvertOrApplyStatement(const char*& staticValue,
[[nodiscard]] Statement_s* ConvertOrApplyStatement(const char*& staticValue,
const ISimpleExpression* expression,
const CommonMenuDef* menu,
const CommonItemDef* item = nullptr) const
@ -492,7 +492,7 @@ namespace
return ConvertExpression(expression, menu, item);
}
_NODISCARD Statement_s* ConvertOrApplyStatement(Material*& staticValue,
[[nodiscard]] Statement_s* ConvertOrApplyStatement(Material*& staticValue,
const ISimpleExpression* expression,
const CommonMenuDef* menu,
const CommonItemDef* item = nullptr) const
@ -522,7 +522,7 @@ namespace
return ConvertExpression(expression, menu, item);
}
_NODISCARD Statement_s* ConvertVisibleExpression(windowDef_t* window,
[[nodiscard]] Statement_s* ConvertVisibleExpression(windowDef_t* window,
const ISimpleExpression* expression,
const CommonMenuDef* commonMenu,
const CommonItemDef* commonItem = nullptr) const
@ -556,7 +556,7 @@ namespace
return ConvertExpression(expression, commonMenu, commonItem);
}
_NODISCARD static EventType SetLocalVarTypeToEventType(const SetLocalVarType setLocalVarType)
[[nodiscard]] static EventType SetLocalVarTypeToEventType(const SetLocalVarType setLocalVarType)
{
switch (setLocalVarType)
{
@ -593,7 +593,7 @@ namespace
outputSetLocalVar->localVarName = m_memory.Dup(setLocalVar->m_var_name.c_str());
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
@ -606,7 +606,7 @@ namespace
outputHandler->eventType = EVENT_UNCONDITIONAL;
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,
@ -685,7 +685,7 @@ namespace
ConvertEventHandler(elements, element.get(), menu, item);
}
_NODISCARD MenuEventHandlerSet*
[[nodiscard]] MenuEventHandlerSet*
ConvertEventHandlerSet(const CommonEventHandlerSet* eventHandlerSet, const CommonMenuDef* menu, const CommonItemDef* item = nullptr) const
{
if (!eventHandlerSet)
@ -707,7 +707,7 @@ namespace
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 CommonItemDef* item = nullptr) const
{
@ -844,7 +844,7 @@ namespace
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;
@ -856,7 +856,7 @@ namespace
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;
@ -893,7 +893,7 @@ namespace
return nullptr;
}
_NODISCARD listBoxDef_s* ConvertListBoxFeatures(itemDef_s* item,
[[nodiscard]] listBoxDef_s* ConvertListBoxFeatures(itemDef_s* item,
CommonItemFeaturesListBox* commonListBox,
const CommonMenuDef& parentMenu,
const CommonItemDef& commonItem) const
@ -928,7 +928,7 @@ namespace
return listBox;
}
_NODISCARD editFieldDef_s* ConvertEditFieldFeatures(itemDef_s* item,
[[nodiscard]] editFieldDef_s* ConvertEditFieldFeatures(itemDef_s* item,
CommonItemFeaturesEditField* commonEditField,
const CommonMenuDef& parentMenu,
const CommonItemDef& commonItem) const
@ -948,7 +948,7 @@ namespace
return editField;
}
_NODISCARD multiDef_s* ConvertMultiValueFeatures(itemDef_s* item,
[[nodiscard]] multiDef_s* ConvertMultiValueFeatures(itemDef_s* item,
CommonItemFeaturesMultiValue* commonMultiValue,
const CommonMenuDef& parentMenu,
const CommonItemDef& commonItem) const
@ -979,7 +979,7 @@ namespace
return multiValue;
}
_NODISCARD newsTickerDef_s* ConvertNewsTickerFeatures(itemDef_s* item,
[[nodiscard]] newsTickerDef_s* ConvertNewsTickerFeatures(itemDef_s* item,
CommonItemFeaturesNewsTicker* commonNewsTicker,
const CommonMenuDef& parentMenu,
const CommonItemDef& commonItem) const
@ -995,7 +995,7 @@ namespace
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>();

View File

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

View File

@ -238,29 +238,29 @@ namespace
}
};
void InitWeaponFullDef(WeaponFullDef* weapon)
void InitWeaponFullDef(WeaponFullDef& weapon)
{
weapon->weapCompleteDef.weapDef = &weapon->weapDef;
weapon->weapCompleteDef.hideTags = weapon->hideTags;
weapon->weapCompleteDef.szXAnims = weapon->szXAnims;
weapon->weapDef.gunXModel = weapon->gunXModel;
weapon->weapDef.szXAnimsRightHanded = weapon->szXAnimsRightHanded;
weapon->weapDef.szXAnimsLeftHanded = weapon->szXAnimsLeftHanded;
weapon->weapDef.notetrackSoundMapKeys = weapon->notetrackSoundMapKeys;
weapon->weapDef.notetrackSoundMapValues = weapon->notetrackSoundMapValues;
weapon->weapDef.notetrackRumbleMapKeys = weapon->notetrackRumbleMapKeys;
weapon->weapDef.notetrackRumbleMapValues = weapon->notetrackRumbleMapValues;
weapon->weapDef.worldModel = weapon->worldModel;
weapon->weapDef.parallelBounce = weapon->parallelBounce;
weapon->weapDef.perpendicularBounce = weapon->perpendicularBounce;
weapon->weapDef.locationDamageMultipliers = weapon->locationDamageMultipliers;
weapon.weapCompleteDef.weapDef = &weapon.weapDef;
weapon.weapCompleteDef.hideTags = weapon.hideTags;
weapon.weapCompleteDef.szXAnims = weapon.szXAnims;
weapon.weapDef.gunXModel = weapon.gunXModel;
weapon.weapDef.szXAnimsRightHanded = weapon.szXAnimsRightHanded;
weapon.weapDef.szXAnimsLeftHanded = weapon.szXAnimsLeftHanded;
weapon.weapDef.notetrackSoundMapKeys = weapon.notetrackSoundMapKeys;
weapon.weapDef.notetrackSoundMapValues = weapon.notetrackSoundMapValues;
weapon.weapDef.notetrackRumbleMapKeys = weapon.notetrackRumbleMapKeys;
weapon.weapDef.notetrackRumbleMapValues = weapon.notetrackRumbleMapValues;
weapon.weapDef.worldModel = weapon.worldModel;
weapon.weapDef.parallelBounce = weapon.parallelBounce;
weapon.weapDef.perpendicularBounce = weapon.perpendicularBounce;
weapon.weapDef.locationDamageMultipliers = weapon.locationDamageMultipliers;
for (const auto& field : weapon_fields)
{
if (field.iFieldType != CSPFT_STRING)
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>();
InitWeaponFullDef(weaponFullDef);
InitWeaponFullDef(*weaponFullDef);
weaponFullDef->weapCompleteDef.szInternalName = m_memory.Dup(assetName.c_str());
AssetRegistration<AssetWeapon> registration(assetName, &weaponFullDef->weapCompleteDef);

View File

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

View File

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

View File

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