core/MenuManager.h
changeset 877 898c39fbfde9
parent 790 9b1474d03470
child 884 a5f3239cef1a
     1.1 --- a/core/MenuManager.h	Tue Jun 05 05:45:48 2007 +0000
     1.2 +++ b/core/MenuManager.h	Tue Jun 05 16:27:45 2007 +0000
     1.3 @@ -25,36 +25,36 @@
     1.4  using namespace SourceMod;
     1.5  using namespace SourceHook;
     1.6  
     1.7 -class BroadcastHandler : public IMenuHandler
     1.8 +class VoteMenuHandler : public IVoteMenuHandler
     1.9  {
    1.10 -public:
    1.11 -	BroadcastHandler(IMenuHandler *handler);
    1.12  public: //IMenuHandler
    1.13 +	unsigned int GetMenuAPIVersion2();
    1.14 +	void OnMenuStart(IBaseMenu *menu);
    1.15  	void OnMenuDisplay(IBaseMenu *menu, int client, IMenuPanel *display);
    1.16  	void OnMenuSelect(IBaseMenu *menu, int client, unsigned int item);
    1.17 +	void OnMenuCancel(IBaseMenu *menu, int client, MenuCancelReason reason);
    1.18  	void OnMenuEnd(IBaseMenu *menu);
    1.19 -	void OnMenuCancel(IBaseMenu *menu, int client, MenuCancelReason reason);
    1.20 -	unsigned int GetMenuAPIVersion2();
    1.21 +	void OnMenuDrawItem(IBaseMenu *menu, int client, unsigned int item, unsigned int &style);
    1.22 +	void OnMenuDisplayItem(IBaseMenu *menu, int client, unsigned int item, const char **display);
    1.23 +public: //IVoteMenuHandler
    1.24 +	bool IsVoteInProgress();
    1.25 +	void InitializeVoting(IBaseMenu *menu);
    1.26 +	void StartVoting();
    1.27  public:
    1.28 -	virtual void OnBroadcastEnd(IBaseMenu *menu);
    1.29 -public:
    1.30 +	void Reset(IMenuHandler *mh);
    1.31 +private:
    1.32 +	void DecrementPlayerCount();
    1.33 +	void EndVoting();
    1.34 +	void InternalReset();
    1.35 +private:
    1.36  	IMenuHandler *m_pHandler;
    1.37 -	unsigned int numClients;
    1.38 -};
    1.39 -
    1.40 -class VoteHandler : public BroadcastHandler
    1.41 -{
    1.42 -public:
    1.43 -	VoteHandler(IMenuVoteHandler *handler);
    1.44 -public:
    1.45 -	void Initialize(IBaseMenu *menu);
    1.46 -	void OnMenuSelect(IBaseMenu *menu, int client, unsigned int item);
    1.47 -	void OnBroadcastEnd(IBaseMenu *menu);
    1.48 -private:
    1.49 -	CVector<unsigned int> m_counts;
    1.50 -	CVector<unsigned int> m_ties;
    1.51 -	unsigned int numItems;
    1.52 -	IMenuVoteHandler *m_pVoteHandler;
    1.53 +	unsigned int m_Clients;
    1.54 +	unsigned int m_Items;
    1.55 +	CVector<unsigned int> m_Votes;
    1.56 +	CVector<unsigned int> m_Dups;
    1.57 +	IBaseMenu *m_pCurMenu;
    1.58 +	bool m_bStarted;
    1.59 +	unsigned int m_NumVotes;
    1.60  };
    1.61  
    1.62  class MenuManager : 
    1.63 @@ -84,35 +84,24 @@
    1.64  	unsigned int GetStyleCount();
    1.65  	IMenuStyle *GetStyle(unsigned int index);
    1.66  	IMenuStyle *FindStyleByName(const char *name);
    1.67 -	unsigned int BroadcastMenu(IBaseMenu *menu, 
    1.68 -		IMenuHandler *handler,
    1.69 -		int clients[], 
    1.70 -		unsigned int numClients,
    1.71 -		unsigned int time);
    1.72 -	unsigned int VoteMenu(IBaseMenu *menu, 
    1.73 -		IMenuVoteHandler *handler,
    1.74 -		int clients[], 
    1.75 -		unsigned int numClients,
    1.76 -		unsigned int time);
    1.77  	IMenuStyle *GetDefaultStyle();
    1.78  	void AddStyle(IMenuStyle *style);
    1.79  	bool SetDefaultStyle(IMenuStyle *style);
    1.80  	IMenuPanel *RenderMenu(int client, menu_states_t &states, ItemOrder order);
    1.81 +	IVoteMenuHandler *CreateVoteWrapper(IMenuHandler *mh);
    1.82 +	void ReleaseVoteWrapper(IVoteMenuHandler *mh);
    1.83  public: //IHandleTypeDispatch
    1.84  	void OnHandleDestroy(HandleType_t type, void *object);
    1.85  public:
    1.86  	HandleError ReadMenuHandle(Handle_t handle, IBaseMenu **menu);
    1.87  	HandleError ReadStyleHandle(Handle_t handle, IMenuStyle **style);
    1.88  protected:
    1.89 -	void FreeBroadcastHandler(BroadcastHandler *bh);
    1.90 -	void FreeVoteHandler(VoteHandler *vh);
    1.91  	Handle_t CreateMenuHandle(IBaseMenu *menu, IdentityToken_t *pOwner);
    1.92  	Handle_t CreateStyleHandle(IMenuStyle *style);
    1.93  private:
    1.94  	int m_ShowMenu;
    1.95  	IMenuStyle *m_pDefaultStyle;
    1.96 -	CStack<BroadcastHandler *> m_BroadcastHandlers;
    1.97 -	CStack<VoteHandler *> m_VoteHandlers;
    1.98 +	CStack<VoteMenuHandler *> m_VoteHandlers;
    1.99  	CVector<IMenuStyle *> m_Styles;
   1.100  	HandleType_t m_StyleType;
   1.101  	HandleType_t m_MenuType;