core/MenuStyle_Base.cpp
changeset 4111 34b8688e3bec
parent 3961 0dc477c29792
child 4141 8ff66ae5ffcc
     1.1 --- a/core/MenuStyle_Base.cpp	Sat Aug 31 11:50:11 2013 -0700
     1.2 +++ b/core/MenuStyle_Base.cpp	Sat Aug 31 11:50:28 2013 -0700
     1.3 @@ -1,5 +1,5 @@
     1.4  /**
     1.5 - * vim: set ts=4 :
     1.6 + * vim: set ts=4 sw=4 tw=99 noet :
     1.7   * =============================================================================
     1.8   * SourceMod
     1.9   * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
    1.10 @@ -604,7 +604,7 @@
    1.11  }
    1.12  
    1.13  CBaseMenu::CBaseMenu(IMenuHandler *pHandler, IMenuStyle *pStyle, IdentityToken_t *pOwner) : 
    1.14 -m_pStyle(pStyle), m_Strings(512), m_Pagination(7), m_bShouldDelete(false), m_bCancelling(false), 
    1.15 +m_pStyle(pStyle), m_Pagination(7), m_bShouldDelete(false), m_bCancelling(false), 
    1.16  m_pOwner(pOwner ? pOwner : g_pCoreIdent), m_bDeleting(false), m_bWillFreeHandle(false), 
    1.17  m_hHandle(BAD_HANDLE), m_pHandler(pHandler), m_nFlags(MENUFLAG_BUTTON_EXIT)
    1.18  {
    1.19 @@ -627,94 +627,74 @@
    1.20  bool CBaseMenu::AppendItem(const char *info, const ItemDrawInfo &draw)
    1.21  {
    1.22  	if (m_Pagination == (unsigned)MENU_NO_PAGINATION
    1.23 -		&& m_items.size() >= m_pStyle->GetMaxPageItems())
    1.24 +		&& m_items.length() >= m_pStyle->GetMaxPageItems())
    1.25  	{
    1.26  		return false;
    1.27  	}
    1.28  
    1.29  	CItem item;
    1.30  
    1.31 -	item.infoString = m_Strings.AddString(info);
    1.32 +	item.info = info;
    1.33  	if (draw.display)
    1.34 -	{
    1.35 -		item.displayString = m_Strings.AddString(draw.display);
    1.36 -	}
    1.37 +		item.display = draw.display;
    1.38  	item.style = draw.style;
    1.39  
    1.40 -	m_items.push_back(item);
    1.41 -
    1.42 +	m_items.append(item);
    1.43  	return true;
    1.44  }
    1.45  
    1.46  bool CBaseMenu::InsertItem(unsigned int position, const char *info, const ItemDrawInfo &draw)
    1.47  {
    1.48 -	if (m_Pagination == (unsigned)MENU_NO_PAGINATION
    1.49 -		&& m_items.size() >= m_pStyle->GetMaxPageItems())
    1.50 -	{
    1.51 -		return false;
    1.52 -	}
    1.53 -
    1.54 -	if (position >= m_items.size())
    1.55 +	if (m_Pagination == (unsigned)MENU_NO_PAGINATION &&
    1.56 +	    m_items.length() >= m_pStyle->GetMaxPageItems())
    1.57  	{
    1.58  		return false;
    1.59  	}
    1.60  
    1.61 +	if (position >= m_items.length())
    1.62 +		return false;
    1.63 +
    1.64  	CItem item;
    1.65 -	item.infoString = m_Strings.AddString(info);
    1.66 +	item.info = info;
    1.67  	if (draw.display)
    1.68 -	{
    1.69 -		item.displayString = m_Strings.AddString(draw.display);
    1.70 -	}
    1.71 +		item.display = draw.display;
    1.72  	item.style = draw.style;
    1.73  
    1.74 -	CVector<CItem>::iterator iter = m_items.iterAt(position);
    1.75 -	m_items.insert(iter, item);
    1.76 -
    1.77 +	m_items.insert(position, item);
    1.78  	return true;
    1.79  }
    1.80  
    1.81  bool CBaseMenu::RemoveItem(unsigned int position)
    1.82  {
    1.83 -	if (position >= m_items.size())
    1.84 -	{
    1.85 +	if (position >= m_items.length())
    1.86  		return false;
    1.87 -	}
    1.88  
    1.89 -	m_items.erase(m_items.iterAt(position));
    1.90 -
    1.91 -	if (m_items.size() == 0)
    1.92 -	{
    1.93 -		m_Strings.Reset();
    1.94 -	}
    1.95 -
    1.96 +	m_items.remove(position);
    1.97  	return true;
    1.98  }
    1.99  
   1.100  void CBaseMenu::RemoveAllItems()
   1.101  {
   1.102  	m_items.clear();
   1.103 -	m_Strings.Reset();
   1.104  }
   1.105  
   1.106  const char *CBaseMenu::GetItemInfo(unsigned int position, ItemDrawInfo *draw/* =NULL */)
   1.107  {
   1.108 -	if (position >= m_items.size())
   1.109 -	{
   1.110 +	if (position >= m_items.length())
   1.111  		return NULL;
   1.112 -	}
   1.113  
   1.114  	if (draw)
   1.115  	{
   1.116 -		draw->display = m_Strings.GetString(m_items[position].displayString);
   1.117 +		draw->display = m_items[position].display.chars();
   1.118  		draw->style = m_items[position].style;
   1.119  	}
   1.120  
   1.121 -	return m_Strings.GetString(m_items[position].infoString);
   1.122 +	return m_items[position].info.chars();
   1.123  }
   1.124  
   1.125  unsigned int CBaseMenu::GetItemCount()
   1.126  {
   1.127 -	return m_items.size();
   1.128 +	return m_items.length();
   1.129  }
   1.130  
   1.131  bool CBaseMenu::SetPagination(unsigned int itemsPerPage)
   1.132 @@ -747,12 +727,12 @@
   1.133  
   1.134  void CBaseMenu::SetDefaultTitle(const char *message)
   1.135  {
   1.136 -	m_Title.assign(message);
   1.137 +	m_Title = message;
   1.138  }
   1.139  
   1.140  const char *CBaseMenu::GetDefaultTitle()
   1.141  {
   1.142 -	return m_Title.c_str();
   1.143 +	return m_Title.chars();
   1.144  }
   1.145  
   1.146  void CBaseMenu::Cancel()
   1.147 @@ -844,7 +824,5 @@
   1.148  
   1.149  unsigned int CBaseMenu::GetBaseMemUsage()
   1.150  {
   1.151 -	return m_Title.size() 
   1.152 -		+ m_Strings.GetMemTable()->GetMemUsage()
   1.153 -		+ (m_items.size() * sizeof(CItem));
   1.154 +	return m_Title.length() + (m_items.length() * sizeof(CItem));
   1.155  }