core/MenuStyle_Base.h
author David Anderson <dvander@alliedmods.net>
Sat May 12 23:45:52 2007 +0000 (2007-05-12)
changeset 769 d7dc79f1f93e
child 775 9c537df13ec8
permissions -rw-r--r--
behold with your eyes and view upon what are MENUS
dvander@769
     1
/**
dvander@769
     2
 * vim: set ts=4 :
dvander@769
     3
 * ===============================================================
dvander@769
     4
 * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
dvander@769
     5
 * ===============================================================
dvander@769
     6
 *
dvander@769
     7
 * This file is not open source and may not be copied without explicit
dvander@769
     8
 * written permission of AlliedModders LLC.  This file may not be redistributed 
dvander@769
     9
 * in whole or significant part.
dvander@769
    10
 * For information, see LICENSE.txt or http://www.sourcemod.net/license.php
dvander@769
    11
 *
dvander@769
    12
 * Version: $Id$
dvander@769
    13
 */
dvander@769
    14
dvander@769
    15
#ifndef _INCLUDE_MENUSTYLE_BASE_H
dvander@769
    16
#define _INCLUDE_MENUSTYLE_BASE_H
dvander@769
    17
dvander@769
    18
#include <IMenuManager.h>
dvander@769
    19
#include <sh_string.h>
dvander@769
    20
#include <sh_vector.h>
dvander@769
    21
#include "sm_memtable.h"
dvander@769
    22
dvander@769
    23
using namespace SourceMod;
dvander@769
    24
using namespace SourceHook;
dvander@769
    25
dvander@769
    26
class CItem
dvander@769
    27
{
dvander@769
    28
public:
dvander@769
    29
	CItem()
dvander@769
    30
	{
dvander@769
    31
		infoString = -1;
dvander@769
    32
		displayString = -1;
dvander@769
    33
		style = 0;
dvander@769
    34
	}
dvander@769
    35
public:
dvander@769
    36
	int infoString;
dvander@769
    37
	int displayString;
dvander@769
    38
	unsigned int style;
dvander@769
    39
};
dvander@769
    40
dvander@769
    41
class CBaseMenu : public IBaseMenu
dvander@769
    42
{
dvander@769
    43
public:
dvander@769
    44
	CBaseMenu(IMenuStyle *pStyle);
dvander@769
    45
	virtual ~CBaseMenu();
dvander@769
    46
public:
dvander@769
    47
	virtual bool AppendItem(const char *info, const ItemDrawInfo &draw);
dvander@769
    48
	virtual bool InsertItem(unsigned int position, const char *info, const ItemDrawInfo &draw);
dvander@769
    49
	virtual bool RemoveItem(unsigned int position);
dvander@769
    50
	virtual void RemoveAllItems();
dvander@769
    51
	virtual const char *GetItemInfo(unsigned int position, ItemDrawInfo *draw=NULL);
dvander@769
    52
	virtual unsigned int GetItemCount();
dvander@769
    53
	virtual bool SetPagination(unsigned int itemsPerPage);
dvander@769
    54
	virtual unsigned int GetPagination();
dvander@769
    55
	virtual IMenuStyle *GetDrawStyle();
dvander@769
    56
	virtual void SetDefaultTitle(const char *message);
dvander@769
    57
	virtual const char *GetDefaultTitle();
dvander@769
    58
	virtual bool GetExitButton();
dvander@769
    59
	virtual bool SetExitButton(bool set);
dvander@769
    60
protected:
dvander@769
    61
	String m_Title;
dvander@769
    62
	IMenuStyle *m_pStyle;
dvander@769
    63
	unsigned int m_Pagination;
dvander@769
    64
	CVector<CItem> m_items;
dvander@769
    65
	BaseStringTable m_Strings;
dvander@769
    66
	bool m_ExitButton;
dvander@769
    67
};
dvander@769
    68
dvander@769
    69
#endif //_INCLUDE_MENUSTYLE_BASE_H