Added support for custom maxitems on radio menus (bug 5371, r=asherkin).
This commit is contained in:
parent
dfadfe37f6
commit
601186fd6a
@ -45,6 +45,14 @@ int g_ShowMenuId = -1;
|
|||||||
bool g_bRadioInit = false;
|
bool g_bRadioInit = false;
|
||||||
unsigned int g_RadioMenuTimeout = 0;
|
unsigned int g_RadioMenuTimeout = 0;
|
||||||
|
|
||||||
|
// back, next, exit
|
||||||
|
#define MAX_PAGINATION_OPTIONS 3
|
||||||
|
|
||||||
|
#define MAX_MENUSLOT_KEYS 10
|
||||||
|
|
||||||
|
static unsigned int s_RadioMaxPageItems = MAX_MENUSLOT_KEYS;
|
||||||
|
|
||||||
|
|
||||||
CRadioStyle::CRadioStyle()
|
CRadioStyle::CRadioStyle()
|
||||||
{
|
{
|
||||||
m_players = new CRadioMenuPlayer[256+1];
|
m_players = new CRadioMenuPlayer[256+1];
|
||||||
@ -90,6 +98,18 @@ void CRadioStyle::OnSourceModLevelChange(const char *mapName)
|
|||||||
g_RadioMenuTimeout = 0;
|
g_RadioMenuTimeout = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *items = g_pGameConf->GetKeyValue("RadioMenuMaxPageItems");
|
||||||
|
if (items != NULL)
|
||||||
|
{
|
||||||
|
int value = atoi(items);
|
||||||
|
|
||||||
|
// Only override the mostly-safe default if it's a sane value
|
||||||
|
if (value > MAX_PAGINATION_OPTIONS && value <= MAX_MENUSLOT_KEYS)
|
||||||
|
{
|
||||||
|
s_RadioMaxPageItems = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
g_Menus.AddStyle(this);
|
g_Menus.AddStyle(this);
|
||||||
g_Menus.SetDefaultStyle(this);
|
g_Menus.SetDefaultStyle(this);
|
||||||
|
|
||||||
@ -189,7 +209,7 @@ IBaseMenu *CRadioStyle::CreateMenu(IMenuHandler *pHandler, IdentityToken_t *pOwn
|
|||||||
|
|
||||||
unsigned int CRadioStyle::GetMaxPageItems()
|
unsigned int CRadioStyle::GetMaxPageItems()
|
||||||
{
|
{
|
||||||
return 10;
|
return s_RadioMaxPageItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *CRadioStyle::GetStyleName()
|
const char *CRadioStyle::GetStyleName()
|
||||||
@ -307,7 +327,7 @@ unsigned int CRadioDisplay::GetCurrentKey()
|
|||||||
|
|
||||||
bool CRadioDisplay::SetCurrentKey(unsigned int key)
|
bool CRadioDisplay::SetCurrentKey(unsigned int key)
|
||||||
{
|
{
|
||||||
if (key < m_NextPos || m_NextPos > 10)
|
if (key < m_NextPos || m_NextPos > s_RadioMaxPageItems)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -343,7 +363,7 @@ void CRadioDisplay::DrawTitle(const char *text, bool onlyIfEmpty/* =false */)
|
|||||||
|
|
||||||
unsigned int CRadioDisplay::DrawItem(const ItemDrawInfo &item)
|
unsigned int CRadioDisplay::DrawItem(const ItemDrawInfo &item)
|
||||||
{
|
{
|
||||||
if (m_NextPos > 10 || !CanDrawItem(item.style))
|
if (m_NextPos > s_RadioMaxPageItems || !CanDrawItem(item.style))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -511,6 +531,7 @@ unsigned int CRadioDisplay::GetApproxMemUsage()
|
|||||||
CRadioMenu::CRadioMenu(IMenuHandler *pHandler, IdentityToken_t *pOwner) :
|
CRadioMenu::CRadioMenu(IMenuHandler *pHandler, IdentityToken_t *pOwner) :
|
||||||
CBaseMenu(pHandler, &g_RadioMenuStyle, pOwner)
|
CBaseMenu(pHandler, &g_RadioMenuStyle, pOwner)
|
||||||
{
|
{
|
||||||
|
m_Pagination = s_RadioMaxPageItems - MAX_PAGINATION_OPTIONS;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CRadioMenu::SetExtOption(MenuOption option, const void *valuePtr)
|
bool CRadioMenu::SetExtOption(MenuOption option, const void *valuePtr)
|
||||||
@ -551,6 +572,17 @@ bool CRadioMenu::DisplayAtItem(int client,
|
|||||||
time);
|
time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CRadioMenu::SetPagination(unsigned int itemsPerPage)
|
||||||
|
{
|
||||||
|
const unsigned int maxPerPage = s_RadioMaxPageItems - MAX_PAGINATION_OPTIONS;
|
||||||
|
if (itemsPerPage > maxPerPage)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return CBaseMenu::SetPagination(itemsPerPage);
|
||||||
|
}
|
||||||
|
|
||||||
void CRadioMenu::Cancel_Finally()
|
void CRadioMenu::Cancel_Finally()
|
||||||
{
|
{
|
||||||
g_RadioMenuStyle.CancelMenu(this);
|
g_RadioMenuStyle.CancelMenu(this);
|
||||||
|
@ -142,6 +142,7 @@ public:
|
|||||||
unsigned int time,
|
unsigned int time,
|
||||||
unsigned int start_item,
|
unsigned int start_item,
|
||||||
IMenuHandler *alt_handler/* =NULL */);
|
IMenuHandler *alt_handler/* =NULL */);
|
||||||
|
bool SetPagination(unsigned int itemsPerPage);
|
||||||
void Cancel_Finally();
|
void Cancel_Finally();
|
||||||
unsigned int GetApproxMemUsage();
|
unsigned int GetApproxMemUsage();
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user