core/MenuStyle_Radio.h
author David Anderson <dvander@alliedmods.net>
Sun May 13 05:51:30 2007 +0000 (2007-05-13)
changeset 780 570fa34723bf
child 785 bca431afd754
permissions -rw-r--r--
initial import of radio message - UNTESTED, DO NOT EVEN TRY LOL
added supported mods for radio messages into core gameconf
various internal fixes/improvements for menus
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@780
    25
dvander@780
    26
using namespace SourceMod;
dvander@780
    27
dvander@780
    28
class CRadioStyle : 
dvander@780
    29
	public BaseMenuStyle,
dvander@780
    30
	public SMGlobalClass,
dvander@780
    31
	public IUserMessageListener
dvander@780
    32
{
dvander@780
    33
public:
dvander@780
    34
	CRadioStyle();
dvander@780
    35
public: //SMGlobalClass
dvander@780
    36
	void OnSourceModAllInitialized();
dvander@780
    37
	void OnSourceModShutdown();
dvander@780
    38
public: //BaseMenuStyle
dvander@780
    39
	CBaseMenuPlayer *GetMenuPlayer(int client);
dvander@780
    40
	void SendDisplay(int client, IMenuDisplay *display);
dvander@780
    41
public: //IMenuStyle
dvander@780
    42
	const char *GetStyleName();
dvander@780
    43
	IMenuDisplay *CreateDisplay();
dvander@780
    44
	IBaseMenu *CreateMenu();
dvander@780
    45
	unsigned int GetMaxPageItems();
dvander@780
    46
public: //IUserMessageListener
dvander@780
    47
	void OnUserMessage(int msg_id, bf_write *bf, IRecipientFilter *pFilter);
dvander@780
    48
	void OnUserMessageSent(int msg_id);
dvander@780
    49
public:
dvander@780
    50
	bool IsSupported();
dvander@780
    51
	bool OnClientCommand(int client);
dvander@780
    52
private:
dvander@780
    53
	CBaseMenuPlayer *m_players;
dvander@780
    54
};
dvander@780
    55
dvander@780
    56
class CRadioMenu;
dvander@780
    57
dvander@780
    58
class CRadioDisplay : public IMenuDisplay
dvander@780
    59
{
dvander@780
    60
public:
dvander@780
    61
	CRadioDisplay();
dvander@780
    62
	CRadioDisplay(CRadioMenu *menu);
dvander@780
    63
public: //IMenuDisplay
dvander@780
    64
	IMenuStyle *GetParentStyle();
dvander@780
    65
	void Reset();
dvander@780
    66
	void DrawTitle(const char *text, bool onlyIfEmpty=false);
dvander@780
    67
	unsigned int DrawItem(const ItemDrawInfo &item);
dvander@780
    68
	bool DrawRawLine(const char *rawline);
dvander@780
    69
	bool SetExtOption(MenuOption option, const void *valuePtr);
dvander@780
    70
	bool CanDrawItem(unsigned int drawFlags);
dvander@780
    71
	bool SendDisplay(int client, IMenuHandler *handler, unsigned int time);
dvander@780
    72
	void DeleteThis();
dvander@780
    73
	void SendRawDisplay(int client, unsigned int time);
dvander@780
    74
private:
dvander@780
    75
	String m_BufferText;
dvander@780
    76
	String m_Title;
dvander@780
    77
	unsigned int m_NextPos;
dvander@780
    78
	int keys;
dvander@780
    79
};
dvander@780
    80
dvander@780
    81
class CRadioMenu : public CBaseMenu
dvander@780
    82
{
dvander@780
    83
public:
dvander@780
    84
	CRadioMenu();
dvander@780
    85
public:
dvander@780
    86
	bool SetExtOption(MenuOption option, const void *valuePtr);
dvander@780
    87
	IMenuDisplay *CreateDisplay();
dvander@780
    88
	bool Display(int client, IMenuHandler *handler, unsigned int time);
dvander@780
    89
	void Cancel_Finally();
dvander@780
    90
};
dvander@780
    91
dvander@780
    92
extern CRadioStyle g_RadioMenuStyle;
dvander@780
    93
dvander@780
    94
#endif //_INCLUDE_MENUSTYLE_RADIO_H