core/MenuStyle_Radio.h
author David Anderson <dvander@alliedmods.net>
Fri Jun 01 02:30:29 2007 +0000 (2007-06-01)
changeset 868 bdbf922e246f
parent 846 b7abf6295b42
child 877 898c39fbfde9
permissions -rw-r--r--
-initial import of database natives + config
-initial import of completed database layer
-CreateIdentity now requires a non-optional second pointer. This breaks backwards compatibility for CreateIdentity(), however, this is not a function extension authors are supposed to be calling
dvander@780
     1
/**
dvander@780
     2
 * vim: set ts=4 :
dvander@780
     3
 * ===============================================================
dvander@780
     4
 * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
dvander@780
     5
 * ===============================================================
dvander@780
     6
 *
dvander@780
     7
 * This file is not open source and may not be copied without explicit
dvander@780
     8
 * written permission of AlliedModders LLC.  This file may not be redistributed 
dvander@780
     9
 * in whole or significant part.
dvander@780
    10
 * For information, see LICENSE.txt or http://www.sourcemod.net/license.php
dvander@780
    11
 *
dvander@780
    12
 * Version: $Id$
dvander@780
    13
 */
dvander@780
    14
dvander@780
    15
#ifndef _INCLUDE_MENUSTYLE_RADIO_H
dvander@780
    16
#define _INCLUDE_MENUSTYLE_RADIO_H
dvander@780
    17
dvander@780
    18
#include "sm_globals.h"
dvander@780
    19
#include "MenuManager.h"
dvander@780
    20
#include "MenuStyle_Base.h"
dvander@780
    21
#include "sourcemm_api.h"
dvander@780
    22
#include <IPlayerHelpers.h>
dvander@780
    23
#include <IUserMessages.h>
dvander@780
    24
#include "sm_fastlink.h"
dvander@790
    25
#include <sh_stack.h>
dvander@780
    26
dvander@780
    27
using namespace SourceMod;
dvander@780
    28
dvander@790
    29
class CRadioDisplay;
dvander@790
    30
class CRadioMenu;
dvander@790
    31
dvander@780
    32
class CRadioStyle : 
dvander@780
    33
	public BaseMenuStyle,
dvander@780
    34
	public SMGlobalClass,
dvander@780
    35
	public IUserMessageListener
dvander@780
    36
{
dvander@780
    37
public:
dvander@780
    38
	CRadioStyle();
dvander@780
    39
public: //SMGlobalClass
dvander@846
    40
	void OnSourceModAllInitialized();
dvander@785
    41
	void OnSourceModLevelChange(const char *mapName);
dvander@780
    42
	void OnSourceModShutdown();
dvander@780
    43
public: //BaseMenuStyle
dvander@780
    44
	CBaseMenuPlayer *GetMenuPlayer(int client);
dvander@787
    45
	void SendDisplay(int client, IMenuPanel *display);
dvander@780
    46
public: //IMenuStyle
dvander@780
    47
	const char *GetStyleName();
dvander@787
    48
	IMenuPanel *CreatePanel();
dvander@790
    49
	IBaseMenu *CreateMenu(IMenuHandler *pHandler, IdentityToken_t *pOwner);
dvander@780
    50
	unsigned int GetMaxPageItems();
dvander@780
    51
public: //IUserMessageListener
dvander@780
    52
	void OnUserMessage(int msg_id, bf_write *bf, IRecipientFilter *pFilter);
dvander@780
    53
	void OnUserMessageSent(int msg_id);
dvander@780
    54
public:
dvander@780
    55
	bool IsSupported();
dvander@780
    56
	bool OnClientCommand(int client);
dvander@790
    57
public:
dvander@790
    58
	CRadioDisplay *MakeRadioDisplay(CRadioMenu *menu=NULL);
dvander@790
    59
	void FreeRadioDisplay(CRadioDisplay *display);
dvander@780
    60
private:
dvander@780
    61
	CBaseMenuPlayer *m_players;
dvander@790
    62
	CStack<CRadioDisplay *> m_FreeDisplays;
dvander@780
    63
};
dvander@780
    64
dvander@787
    65
class CRadioDisplay : public IMenuPanel
dvander@780
    66
{
dvander@790
    67
	friend class CRadioStyle;
dvander@780
    68
public:
dvander@780
    69
	CRadioDisplay();
dvander@780
    70
	CRadioDisplay(CRadioMenu *menu);
dvander@787
    71
public: //IMenuPanel
dvander@780
    72
	IMenuStyle *GetParentStyle();
dvander@780
    73
	void Reset();
dvander@780
    74
	void DrawTitle(const char *text, bool onlyIfEmpty=false);
dvander@780
    75
	unsigned int DrawItem(const ItemDrawInfo &item);
dvander@780
    76
	bool DrawRawLine(const char *rawline);
dvander@780
    77
	bool SetExtOption(MenuOption option, const void *valuePtr);
dvander@780
    78
	bool CanDrawItem(unsigned int drawFlags);
dvander@780
    79
	bool SendDisplay(int client, IMenuHandler *handler, unsigned int time);
dvander@780
    80
	void DeleteThis();
dvander@780
    81
	void SendRawDisplay(int client, unsigned int time);
dvander@819
    82
	bool SetSelectableKeys(unsigned int keymap);
dvander@840
    83
	unsigned int GetCurrentKey();
dvander@840
    84
	bool SetCurrentKey(unsigned int key);
dvander@780
    85
private:
dvander@780
    86
	String m_BufferText;
dvander@780
    87
	String m_Title;
dvander@780
    88
	unsigned int m_NextPos;
dvander@780
    89
	int keys;
dvander@780
    90
};
dvander@780
    91
dvander@780
    92
class CRadioMenu : public CBaseMenu
dvander@780
    93
{
dvander@780
    94
public:
dvander@790
    95
	CRadioMenu(IMenuHandler *pHandler, IdentityToken_t *pOwner);
dvander@780
    96
public:
dvander@780
    97
	bool SetExtOption(MenuOption option, const void *valuePtr);
dvander@787
    98
	IMenuPanel *CreatePanel();
dvander@790
    99
	bool Display(int client, unsigned int time);
dvander@780
   100
	void Cancel_Finally();
dvander@780
   101
};
dvander@780
   102
dvander@780
   103
extern CRadioStyle g_RadioMenuStyle;
dvander@780
   104
dvander@780
   105
#endif //_INCLUDE_MENUSTYLE_RADIO_H