diff --git a/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderMenuList.cpp b/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderMenuList.cpp index bcc5f162..912548a0 100644 --- a/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderMenuList.cpp +++ b/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderMenuList.cpp @@ -34,7 +34,7 @@ namespace IW4 zoneState->AddFunction(std::move(function)); // Prepare a list of all menus of this file - std::vector allMenusOfFile; + std::vector*> allMenusOfFile; allMenusOfFile.reserve(parsingResult->m_menus.size()); // Convert all menus and add them as assets @@ -49,11 +49,13 @@ namespace IW4 } menus.push_back(menuAsset); - allMenusOfFile.push_back(menuAsset); auto* menuAssetInfo = manager->AddAsset(ASSET_TYPE_MENU, menu->m_name, menuAsset, std::move(converter.GetDependencies()), std::vector()); if (menuAssetInfo) + { + allMenusOfFile.push_back(reinterpret_cast*>(menuAssetInfo)); menuListDependencies.push_back(menuAssetInfo); + } zoneState->AddMenu(std::move(menu)); } @@ -142,7 +144,10 @@ bool AssetLoaderMenuList::LoadFromRaw(const std::string& assetName, ISearchPath* { std::cout << "Already loaded \"" << menuFileToLoad << "\", skipping\n"; for (auto* menu : alreadyLoadedMenuFile->second) - menus.push_back(menu); + { + menus.push_back(menu->Asset()); + menuListDependencies.push_back(menu); + } continue; } @@ -160,7 +165,7 @@ bool AssetLoaderMenuList::LoadFromRaw(const std::string& assetName, ISearchPath* auto* menuListAsset = MenuLoader::CreateMenuListAsset(assetName, memory, menus); if (menuListAsset) - manager->AddAsset(ASSET_TYPE_MENULIST, assetName, menuListAsset); + manager->AddAsset(ASSET_TYPE_MENULIST, assetName, menuListAsset, menuListDependencies, std::vector()); return true; } diff --git a/src/ObjLoading/Game/IW4/Menu/MenuConversionZoneStateIW4.cpp b/src/ObjLoading/Game/IW4/Menu/MenuConversionZoneStateIW4.cpp index 01d02ce7..3868e3f0 100644 --- a/src/ObjLoading/Game/IW4/Menu/MenuConversionZoneStateIW4.cpp +++ b/src/ObjLoading/Game/IW4/Menu/MenuConversionZoneStateIW4.cpp @@ -73,7 +73,7 @@ const char* MenuConversionZoneState::AddString(const std::string& str) return strDuped; } -void MenuConversionZoneState::AddLoadedFile(std::string loadedFileName, std::vector menusOfFile) +void MenuConversionZoneState::AddLoadedFile(std::string loadedFileName, std::vector*> menusOfFile) { m_menus_by_filename.emplace(std::make_pair(std::move(loadedFileName), std::move(menusOfFile))); } diff --git a/src/ObjLoading/Game/IW4/Menu/MenuConversionZoneStateIW4.h b/src/ObjLoading/Game/IW4/Menu/MenuConversionZoneStateIW4.h index 3ead70c4..bb4a5da9 100644 --- a/src/ObjLoading/Game/IW4/Menu/MenuConversionZoneStateIW4.h +++ b/src/ObjLoading/Game/IW4/Menu/MenuConversionZoneStateIW4.h @@ -20,7 +20,7 @@ namespace IW4 std::map m_strings_by_value; public: - std::map> m_menus_by_filename; + std::map*>> m_menus_by_filename; ExpressionSupportingData* m_supporting_data; MenuConversionZoneState(); @@ -32,7 +32,7 @@ namespace IW4 size_t AddStaticDvar(const std::string& dvarName); const char* AddString(const std::string& str); - void AddLoadedFile(std::string loadedFileName, std::vector menusOfFile); + void AddLoadedFile(std::string loadedFileName, std::vector*> menusOfFile); void FinalizeSupportingData() const; };