dvander@780: /** dvander@780: * vim: set ts=4 : dvander@780: * =============================================================== dvander@780: * SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved. dvander@780: * =============================================================== dvander@780: * dvander@780: * This file is not open source and may not be copied without explicit dvander@780: * written permission of AlliedModders LLC. This file may not be redistributed dvander@780: * in whole or significant part. dvander@780: * For information, see LICENSE.txt or http://www.sourcemod.net/license.php dvander@780: * dvander@780: * Version: $Id$ dvander@780: */ dvander@780: dvander@780: #ifndef _INCLUDE_MENUSTYLE_RADIO_H dvander@780: #define _INCLUDE_MENUSTYLE_RADIO_H dvander@780: dvander@780: #include "sm_globals.h" dvander@780: #include "MenuManager.h" dvander@780: #include "MenuStyle_Base.h" dvander@780: #include "sourcemm_api.h" dvander@780: #include dvander@780: #include dvander@780: #include "sm_fastlink.h" dvander@790: #include dvander@780: dvander@780: using namespace SourceMod; dvander@780: dvander@790: class CRadioDisplay; dvander@790: class CRadioMenu; dvander@790: dvander@780: class CRadioStyle : dvander@780: public BaseMenuStyle, dvander@780: public SMGlobalClass, dvander@780: public IUserMessageListener dvander@780: { dvander@780: public: dvander@780: CRadioStyle(); dvander@780: public: //SMGlobalClass dvander@846: void OnSourceModAllInitialized(); dvander@785: void OnSourceModLevelChange(const char *mapName); dvander@780: void OnSourceModShutdown(); dvander@780: public: //BaseMenuStyle dvander@780: CBaseMenuPlayer *GetMenuPlayer(int client); dvander@787: void SendDisplay(int client, IMenuPanel *display); dvander@780: public: //IMenuStyle dvander@780: const char *GetStyleName(); dvander@787: IMenuPanel *CreatePanel(); dvander@790: IBaseMenu *CreateMenu(IMenuHandler *pHandler, IdentityToken_t *pOwner); dvander@780: unsigned int GetMaxPageItems(); dvander@780: public: //IUserMessageListener dvander@780: void OnUserMessage(int msg_id, bf_write *bf, IRecipientFilter *pFilter); dvander@780: void OnUserMessageSent(int msg_id); dvander@780: public: dvander@780: bool IsSupported(); dvander@780: bool OnClientCommand(int client); dvander@790: public: dvander@790: CRadioDisplay *MakeRadioDisplay(CRadioMenu *menu=NULL); dvander@790: void FreeRadioDisplay(CRadioDisplay *display); dvander@780: private: dvander@780: CBaseMenuPlayer *m_players; dvander@790: CStack m_FreeDisplays; dvander@780: }; dvander@780: dvander@787: class CRadioDisplay : public IMenuPanel dvander@780: { dvander@790: friend class CRadioStyle; dvander@780: public: dvander@780: CRadioDisplay(); dvander@780: CRadioDisplay(CRadioMenu *menu); dvander@787: public: //IMenuPanel dvander@780: IMenuStyle *GetParentStyle(); dvander@780: void Reset(); dvander@780: void DrawTitle(const char *text, bool onlyIfEmpty=false); dvander@780: unsigned int DrawItem(const ItemDrawInfo &item); dvander@780: bool DrawRawLine(const char *rawline); dvander@780: bool SetExtOption(MenuOption option, const void *valuePtr); dvander@780: bool CanDrawItem(unsigned int drawFlags); dvander@780: bool SendDisplay(int client, IMenuHandler *handler, unsigned int time); dvander@780: void DeleteThis(); dvander@780: void SendRawDisplay(int client, unsigned int time); dvander@819: bool SetSelectableKeys(unsigned int keymap); dvander@840: unsigned int GetCurrentKey(); dvander@840: bool SetCurrentKey(unsigned int key); dvander@780: private: dvander@780: String m_BufferText; dvander@780: String m_Title; dvander@780: unsigned int m_NextPos; dvander@780: int keys; dvander@780: }; dvander@780: dvander@780: class CRadioMenu : public CBaseMenu dvander@780: { dvander@780: public: dvander@790: CRadioMenu(IMenuHandler *pHandler, IdentityToken_t *pOwner); dvander@780: public: dvander@780: bool SetExtOption(MenuOption option, const void *valuePtr); dvander@787: IMenuPanel *CreatePanel(); dvander@790: bool Display(int client, unsigned int time); dvander@780: void Cancel_Finally(); dvander@877: void VoteDisplay(int client, unsigned int maxTime); dvander@780: }; dvander@780: dvander@780: extern CRadioStyle g_RadioMenuStyle; dvander@780: dvander@780: #endif //_INCLUDE_MENUSTYLE_RADIO_H