XPlor/libs/xassets/xmenulist.cpp

77 lines
1.4 KiB
C++

#include "xmenulist.h"
XMenuList::XMenuList()
: XAsset()
, mName()
, mMenuCount(0)
, mMenus()
{
SetType(ASSET_TYPE_MENULIST);
SetName("Menu List");
}
XMenuList::~XMenuList()
{
mMenus.clear();
}
void XMenuList::SetMenuListName(XString aName)
{
mName = aName;
}
XString XMenuList::MenuListName() const
{
return mName;
}
int XMenuList::GetMenuCount() const
{
return mMenuCount;
}
void XMenuList::SetMenuEntry(int aIndex, XMenuDef aMenuDef)
{
mMenus[aIndex] = aMenuDef;
}
XMenuDef XMenuList::GetMenuEntry(int aIndex) const
{
return mMenus[aIndex];
}
void XMenuList::Clear()
{
mName.Clear();
mMenuCount = 0;
mMenus.clear();
}
void XMenuList::ParseData(XDataStream *aStream)
{
mName.ParsePtr(aStream, false);
mMenuCount = aStream->ParseUInt32(QString("%1 menu count").arg(GetName()));
qint32 menusPtr = aStream->ParseInt32(QString("%1 menus ptr").arg(GetName()));
mName.ParseDataSafe(aStream);
SetDisplayName(mName.GetString());
if (menusPtr)
{
for (uint i = 0; i < mMenuCount; i++)
{
XMenuDef newMenu;
newMenu.SetCommonInfo(GetCommonInfo());
newMenu.ParsePtr(aStream, false);
mMenus.push_back(newMenu);
}
for (uint i = 0; i < mMenus.size(); i++)
{
mMenus[i].ParseDataSafe(aStream);
}
}
}