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;