some minor fixups

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%40782
This commit is contained in:
David Anderson 2007-05-13 04:41:10 +00:00
parent 5aabd81406
commit d9b06e298c
5 changed files with 27 additions and 15 deletions

View File

@ -368,7 +368,7 @@ IMenuDisplay *MenuManager::RenderMenu(int client, menu_states_t &md, ItemOrder o
/* There were no items to draw! */ /* There were no items to draw! */
if (!foundItems) if (!foundItems)
{ {
delete display; display->DeleteThis();
return NULL; return NULL;
} }
@ -520,9 +520,15 @@ skip_search:
slots[position].type = ItemSel_None; slots[position].type = ItemSel_None;
} }
} }
ItemDrawInfo dr(text, 0);
/* Put a fake spacer before control stuff, if possible */
{
ItemDrawInfo draw("", ITEMDRAW_RAWLINE|ITEMDRAW_SPACER);
display->DrawItem(draw);
}
/* PREVIOUS */ /* PREVIOUS */
ItemDrawInfo dr(text, 0);
if (displayPrev || canDrawDisabled) if (displayPrev || canDrawDisabled)
{ {
CorePlayerTranslate(client, text, sizeof(text), "Back", NULL); CorePlayerTranslate(client, text, sizeof(text), "Back", NULL);

View File

@ -376,7 +376,7 @@ bool BaseMenuStyle::DoClientMenu(int client, CBaseMenu *menu, IMenuHandler *mh,
SendDisplay(client, display); SendDisplay(client, display);
/* Free the display pointer */ /* Free the display pointer */
delete display; display->DeleteThis();
/* We can be interrupted again! */ /* We can be interrupted again! */
player->bAutoIgnore = false; player->bAutoIgnore = false;
@ -403,7 +403,7 @@ bool BaseMenuStyle::RedoClientMenu(int client, ItemOrder order)
SendDisplay(client, display); SendDisplay(client, display);
delete display; display->DeleteThis();
player->bAutoIgnore = false; player->bAutoIgnore = false;

View File

@ -177,6 +177,11 @@ CValveMenuDisplay::CValveMenuDisplay(CValveMenu *pMenu)
m_pKv->SetString("title", pMenu->m_IntroMsg); m_pKv->SetString("title", pMenu->m_IntroMsg);
} }
void CValveMenuDisplay::DeleteThis()
{
delete this;
}
CValveMenuDisplay::~CValveMenuDisplay() CValveMenuDisplay::~CValveMenuDisplay()
{ {
m_pKv->deleteThis(); m_pKv->deleteThis();

View File

@ -81,6 +81,7 @@ public:
bool SetExtOption(MenuOption option, const void *valuePtr); bool SetExtOption(MenuOption option, const void *valuePtr);
bool CanDrawItem(unsigned int drawFlags); bool CanDrawItem(unsigned int drawFlags);
void SendRawDisplay(int client, int priority, unsigned int time); void SendRawDisplay(int client, int priority, unsigned int time);
void DeleteThis();
private: private:
KeyValues *m_pKv; KeyValues *m_pKv;
unsigned int m_NextPos; unsigned int m_NextPos;
@ -92,13 +93,14 @@ class CValveMenu : public CBaseMenu
friend class CValveMenuDisplay; friend class CValveMenuDisplay;
public: public:
CValveMenu(); CValveMenu();
public: public: //IBaseMenu
bool SetExtOption(MenuOption option, const void *valuePtr); bool SetExtOption(MenuOption option, const void *valuePtr);
IMenuDisplay *CreateDisplay(); IMenuDisplay *CreateDisplay();
bool GetExitButton(); bool GetExitButton();
bool SetExitButton(bool set); bool SetExitButton(bool set);
bool SetPagination(unsigned int itemsPerPage); bool SetPagination(unsigned int itemsPerPage);
bool Display(int client, IMenuHandler *handler, unsigned int time); bool Display(int client, IMenuHandler *handler, unsigned int time);
public: //CBaseMenu
void Cancel_Finally(); void Cancel_Finally();
private: private:
Color m_IntroColor; Color m_IntroColor;

View File

@ -117,20 +117,18 @@ namespace SourceMod
#define MENU_NO_PAGINATION -1 /**< Menu should not be paginated (10 items max) */ #define MENU_NO_PAGINATION -1 /**< Menu should not be paginated (10 items max) */
#define MENU_TIME_FOREVER 0 /**< Menu should be displayed as long as possible */ #define MENU_TIME_FOREVER 0 /**< Menu should be displayed as long as possible */
#define MENU_DETAIL_NOITEMCOLORS (1<<0) /**< Disables extended colors; menus will be white only */
/** /**
* @brief Extended menu options. * @brief Extended menu options.
*/ */
enum MenuOption enum MenuOption
{ {
MenuOption_DetailFlags, /**< INT *: A combination of MENU_DETAIL properties (default=0) */
MenuOption_IntroMessage, /**< CONST CHAR *: Valve menus only; defaults to: MenuOption_IntroMessage, /**< CONST CHAR *: Valve menus only; defaults to:
"You have a menu, hit ESC" "You have a menu, hit ESC"
*/ */
MenuOption_IntroColor, /**< INT[4]: Valve menus only; specifies the intro message colour MenuOption_IntroColor, /**< INT[4]: Valve menus only; specifies the intro message colour
using R,G,B,A (defaults to 255,0,0,255) using R,G,B,A (defaults to 255,0,0,255)
*/ */
MenuOption_Priority, /**< INT *: Valve menus only; priority (less is higher) */
}; };
/** /**
@ -151,10 +149,6 @@ namespace SourceMod
*/ */
class IMenuDisplay class IMenuDisplay
{ {
public:
virtual ~IMenuDisplay()
{
}
public: public:
/** /**
* @brief Returns the parent IMenuStyle pointer. * @brief Returns the parent IMenuStyle pointer.
@ -223,6 +217,11 @@ namespace SourceMod
* @return True on success, false otherwise. * @return True on success, false otherwise.
*/ */
virtual bool SendDisplay(int client, IMenuHandler *handler, unsigned int time) =0; virtual bool SendDisplay(int client, IMenuHandler *handler, unsigned int time) =0;
/**
* @brief Destroys the display object.
*/
virtual void DeleteThis() =0;
}; };
/** /**
@ -252,7 +251,7 @@ namespace SourceMod
/** /**
* @brief Creates an IMenuDisplay object. * @brief Creates an IMenuDisplay object.
* *
* Note: the object should be freed using delete. * Note: the object should be freed using ::DeleteThis.
* *
* @return IMenuDisplay object. * @return IMenuDisplay object.
*/ */
@ -400,7 +399,7 @@ namespace SourceMod
* @brief Creates a new IMenuDisplay object using extended options specific * @brief Creates a new IMenuDisplay object using extended options specific
* to the IMenuStyle parent. Titles, items, etc, are not copied. * to the IMenuStyle parent. Titles, items, etc, are not copied.
* *
* Note: The object should be freed with delete. * Note: The object should be freed with IMenuDisplay::DeleteThis.
* *
* @return IMenuDisplay pointer. * @return IMenuDisplay pointer.
*/ */
@ -638,7 +637,7 @@ namespace SourceMod
* @return IDisplay pointer, or NULL if no items could be * @return IDisplay pointer, or NULL if no items could be
* found in the IBaseMenu pointer, or NULL if any * found in the IBaseMenu pointer, or NULL if any
* other error occurred. Any valid pointer must * other error occurred. Any valid pointer must
* be freed using delete. * be freed using IMenuDisplay::DeleteThis.
*/ */
virtual IMenuDisplay *RenderMenu(int client, menu_states_t &states, ItemOrder order) =0; virtual IMenuDisplay *RenderMenu(int client, menu_states_t &states, ItemOrder order) =0;
}; };