1.1 --- a/core/smn_menus.cpp Fri Jun 22 21:04:13 2007 +0000
1.2 +++ b/core/smn_menus.cpp Fri Jun 22 22:37:22 2007 +0000
1.3 @@ -43,6 +43,7 @@
1.4 MenuAction_VoteEnd = (1<<5), /**< (VOTE ONLY): A vote sequence has ended (param1=chosen item) */
1.5 MenuAction_VoteStart = (1<<6), /**< (VOTE ONLY): A vote sequence has started */
1.6 MenuAction_VoteCancel = (1<<7), /**< (VOTE ONLY): A vote sequence has been cancelled (nothing passed) */
1.7 + MenuAction_DrawItem = (1<<8), /**< A style is being drawn; return the new style (param1=client, param2=item) */
1.8 };
1.9
1.10 class CPanelHandler : public IMenuHandler
1.11 @@ -77,12 +78,13 @@
1.12 unsigned int winningVotes,
1.13 unsigned int totalVotes);
1.14 void OnMenuVoteCancel(IBaseMenu *menu);
1.15 + void OnMenuDrawItem(IBaseMenu *menu, int client, unsigned int item, unsigned int &style);
1.16 #if 0
1.17 void OnMenuDrawItem(IBaseMenu *menu, int client, unsigned int item, unsigned int &style);
1.18 void OnMenuDisplayItem(IBaseMenu *menu, int client, unsigned int item, const char **display);
1.19 #endif
1.20 private:
1.21 - void DoAction(IBaseMenu *menu, MenuAction action, cell_t param1, cell_t param2);
1.22 + cell_t DoAction(IBaseMenu *menu, MenuAction action, cell_t param1, cell_t param2, cell_t def_res=0);
1.23 private:
1.24 IPluginFunction *m_pBasic;
1.25 int m_Flags;
1.26 @@ -307,7 +309,16 @@
1.27 DoAction(menu, MenuAction_VoteCancel, 0, 0);
1.28 }
1.29
1.30 -void CMenuHandler::DoAction(IBaseMenu *menu, MenuAction action, cell_t param1, cell_t param2)
1.31 +void CMenuHandler::OnMenuDrawItem(IBaseMenu *menu, int client, unsigned int item, unsigned int &style)
1.32 +{
1.33 + if ((m_Flags & (int)MenuAction_DrawItem) == (int)MenuAction_DrawItem)
1.34 + {
1.35 + cell_t result = DoAction(menu, MenuAction_DrawItem, client, item, style);
1.36 + style = (unsigned int)result;
1.37 + }
1.38 +}
1.39 +
1.40 +cell_t CMenuHandler::DoAction(IBaseMenu *menu, MenuAction action, cell_t param1, cell_t param2, cell_t def_res)
1.41 {
1.42 #if defined MENU_DEBUG
1.43 g_Logger.LogMessage("[SM_MENU] CMenuHandler::DoAction() (menu %p/%08x) (action %d) (param1 %d) (param2 %d)",
1.44 @@ -317,11 +328,13 @@
1.45 param1,
1.46 param2);
1.47 #endif
1.48 + cell_t res = def_res;
1.49 m_pBasic->PushCell(menu->GetHandle());
1.50 m_pBasic->PushCell((cell_t)action);
1.51 m_pBasic->PushCell(param1);
1.52 m_pBasic->PushCell(param2);
1.53 - m_pBasic->Execute(NULL);
1.54 + m_pBasic->Execute(&res);
1.55 + return res;
1.56 }
1.57
1.58 /**