Properly update menulist asset dependencies

This commit is contained in:
Jan 2021-12-31 00:30:58 +01:00
parent b5475e30f0
commit 657d32e5f6
3 changed files with 12 additions and 7 deletions

View File

@ -34,7 +34,7 @@ namespace IW4
zoneState->AddFunction(std::move(function));
// Prepare a list of all menus of this file
std::vector<menuDef_t*> allMenusOfFile;
std::vector<XAssetInfo<menuDef_t>*> 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<scr_string_t>());
if (menuAssetInfo)
{
allMenusOfFile.push_back(reinterpret_cast<XAssetInfo<menuDef_t>*>(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<scr_string_t>());
return true;
}

View File

@ -73,7 +73,7 @@ const char* MenuConversionZoneState::AddString(const std::string& str)
return strDuped;
}
void MenuConversionZoneState::AddLoadedFile(std::string loadedFileName, std::vector<menuDef_t*> menusOfFile)
void MenuConversionZoneState::AddLoadedFile(std::string loadedFileName, std::vector<XAssetInfo<menuDef_t>*> menusOfFile)
{
m_menus_by_filename.emplace(std::make_pair(std::move(loadedFileName), std::move(menusOfFile)));
}

View File

@ -20,7 +20,7 @@ namespace IW4
std::map<std::string, const char*> m_strings_by_value;
public:
std::map<std::string, std::vector<menuDef_t*>> m_menus_by_filename;
std::map<std::string, std::vector<XAssetInfo<menuDef_t>*>> 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<menuDef_t*> menusOfFile);
void AddLoadedFile(std::string loadedFileName, std::vector<XAssetInfo<menuDef_t>*> menusOfFile);
void FinalizeSupportingData() const;
};