if the menu list name matches the menu name, embed it directly

This commit is contained in:
Jan 2021-10-24 15:38:59 +02:00
parent a2af7db92b
commit 70c31143f4
2 changed files with 19 additions and 9 deletions

View File

@ -53,7 +53,17 @@ bool AssetDumperMenuDef::ShouldDump(XAssetInfo<menuDef_t>* asset)
void AssetDumperMenuDef::DumpAsset(AssetDumpingContext& context, XAssetInfo<menuDef_t>* asset) void AssetDumperMenuDef::DumpAsset(AssetDumpingContext& context, XAssetInfo<menuDef_t>* asset)
{ {
const auto* menu = asset->Asset(); const auto* menu = asset->Asset();
const auto assetFile = context.OpenAssetFile(GetPathForMenu(asset)); const auto menuFilePath = GetPathForMenu(asset);
if(ObjWriting::ShouldHandleAssetType(ASSET_TYPE_MENULIST))
{
// Don't dump menu file separately if the name matches the menu list
const auto* menuListParent = GetParentMenuList(asset);
if (menuListParent && menuFilePath == menuListParent->name)
return;
}
const auto assetFile = context.OpenAssetFile(menuFilePath);
if (!assetFile) if (!assetFile)
return; return;

View File

@ -12,13 +12,6 @@ using namespace IW4;
bool AssetDumperMenuList::ShouldDump(XAssetInfo<MenuList>* asset) bool AssetDumperMenuList::ShouldDump(XAssetInfo<MenuList>* asset)
{ {
const auto* menuList = asset->Asset();
const fs::path p(asset->Asset()->name);
const auto extension = p.extension().string();
if (extension == ".menu" && menuList->menuCount == 1)
return false;
return true; return true;
} }
@ -45,7 +38,14 @@ void AssetDumperMenuList::DumpAsset(AssetDumpingContext& context, XAssetInfo<Men
std::ostringstream ss; std::ostringstream ss;
ss << parentPath << menu->window.name << ".menu"; ss << parentPath << menu->window.name << ".menu";
menuDumper.IncludeMenu(ss.str());
const auto menuName = ss.str();
// If the menu was embedded directly as menu list write its data in the menu list file
if(menuName == menuList->name)
menuDumper.WriteMenu(menu);
else
menuDumper.IncludeMenu(ss.str());
} }
menuDumper.End(); menuDumper.End();