mirror of
https://github.com/nzp-team/quakec.git
synced 2025-02-20 18:52:36 +00:00
MENU: macro hax to get NextButton/PreviousButton
This commit is contained in:
parent
81f7179ebf
commit
8c86b48547
3 changed files with 125 additions and 9 deletions
|
@ -87,6 +87,19 @@ void() Menu_Bindings;
|
|||
|
||||
string(string prev_id) Menu_Main_GetNextButton;
|
||||
string(string next_id) Menu_Main_GetPreviousButton;
|
||||
|
||||
string(string next_id) Menu_Coop_Browse_GetNextButton;
|
||||
string(string next_id) Menu_Coop_Direct_GetNextButton;
|
||||
string(string next_id) Menu_Coop_Join_GetNextButton;
|
||||
string(string next_id) Menu_Coop_Create_GetNextButton;
|
||||
string(string next_id) Menu_Coop_GetNextButton;
|
||||
|
||||
string(string next_id) Menu_Coop_Browse_GetPreviousButton;
|
||||
string(string next_id) Menu_Coop_Direct_GetPreviousButton;
|
||||
string(string next_id) Menu_Coop_Join_GetPreviousButton;
|
||||
string(string next_id) Menu_Coop_Create_GetPreviousButton;
|
||||
string(string next_id) Menu_Coop_GetPreviousButton;
|
||||
|
||||
string(string prev_id) Menu_Maps_GetNextButton;
|
||||
string(string next_id) Menu_Maps_GetPreviousButton;
|
||||
|
||||
|
|
|
@ -217,3 +217,83 @@ void() Menu_Coop =
|
|||
|
||||
sui_pop_frame();
|
||||
};
|
||||
|
||||
string menu_coop_browse_buttons[] = {
|
||||
"cbm_serverlist", "cbm_refresh", "cbm_back"
|
||||
};
|
||||
|
||||
string menu_coop_direct_buttons[] = {
|
||||
"cdm_serverip", "cdm_serverpassword", "cdm_connect", "cdm_back"
|
||||
};
|
||||
|
||||
string menu_coop_join_buttons[] = {
|
||||
"cjm_browse", "cjm_direct", "cjm_back"
|
||||
};
|
||||
|
||||
string menu_coop_create_buttons[] = {
|
||||
"ccm_servername", "ccm_port", "ccm_password", "ccm_choosemap", "ccm_back"
|
||||
};
|
||||
|
||||
string menu_coop_buttons[] = {
|
||||
"cm_playername", "cm_join", "cm_create", "cm_back"
|
||||
};
|
||||
|
||||
// can you tell i'm a C user at heart? -- erysdren
|
||||
|
||||
#define NEXTBUTTON_FUNC(fn, arr) \
|
||||
string(string prev_id) fn ## _GetNextButton = \
|
||||
{ \
|
||||
if (prev_id == "") \
|
||||
return arr[0]; \
|
||||
\
|
||||
string ret = arr[0]; \
|
||||
\
|
||||
for(float i = 0; i < arr.length; i++) { \
|
||||
if (arr[i] == prev_id) { \
|
||||
if (i + 1 >= arr.length) \
|
||||
break; \
|
||||
\
|
||||
ret = arr[i + 1]; \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
\
|
||||
return ret; \
|
||||
}; \
|
||||
|
||||
NEXTBUTTON_FUNC(Menu_Coop_Browse, menu_coop_browse_buttons)
|
||||
NEXTBUTTON_FUNC(Menu_Coop_Direct, menu_coop_direct_buttons)
|
||||
NEXTBUTTON_FUNC(Menu_Coop_Join, menu_coop_join_buttons)
|
||||
NEXTBUTTON_FUNC(Menu_Coop_Create, menu_coop_create_buttons)
|
||||
NEXTBUTTON_FUNC(Menu_Coop, menu_coop_buttons)
|
||||
|
||||
#undef NEXTBUTTON_FUNC
|
||||
|
||||
#define PREVBUTTON_FUNC(fn, arr) \
|
||||
string(string next_id) fn ## _GetPreviousButton = \
|
||||
{ \
|
||||
if (next_id == "") \
|
||||
return arr[arr.length - 1]; \
|
||||
\
|
||||
string ret = arr[arr.length - 1]; \
|
||||
\
|
||||
for(float i = arr.length - 1; i > 0; i--) { \
|
||||
if (arr[i] == next_id) { \
|
||||
if (i - 1 < 0) \
|
||||
break; \
|
||||
\
|
||||
ret = arr[i - 1]; \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
\
|
||||
return ret; \
|
||||
}; \
|
||||
|
||||
PREVBUTTON_FUNC(Menu_Coop_Browse, menu_coop_browse_buttons)
|
||||
PREVBUTTON_FUNC(Menu_Coop_Direct, menu_coop_direct_buttons)
|
||||
PREVBUTTON_FUNC(Menu_Coop_Join, menu_coop_join_buttons)
|
||||
PREVBUTTON_FUNC(Menu_Coop_Create, menu_coop_create_buttons)
|
||||
PREVBUTTON_FUNC(Menu_Coop, menu_coop_buttons)
|
||||
|
||||
#undef PREVBUTTON_FUNC
|
||||
|
|
|
@ -400,17 +400,23 @@ void() _sui_menukey_downarrow =
|
|||
case MENU_MAIN:
|
||||
_hover_actions[0] = Menu_Main_GetNextButton(current_hovered_option);
|
||||
break;
|
||||
// TODO: do this
|
||||
#if 0
|
||||
case MENU_COOP:
|
||||
case MENU_COOPJOIN:
|
||||
case MENU_COOPBROWSE:
|
||||
case MENU_COOPDIRECT:
|
||||
case MENU_COOPCREATE:
|
||||
case MENU_COOPSTOCK:
|
||||
_hover_actions[0] = Menu_Maps_GetNextButton(current_hovered_option);
|
||||
_hover_actions[0] = Menu_Coop_GetNextButton(current_hovered_option);
|
||||
break;
|
||||
#endif
|
||||
case MENU_COOPJOIN:
|
||||
_hover_actions[0] = Menu_Coop_Join_GetNextButton(current_hovered_option);
|
||||
break;
|
||||
case MENU_COOPBROWSE:
|
||||
_hover_actions[0] = Menu_Coop_Browse_GetNextButton(current_hovered_option);
|
||||
break;
|
||||
case MENU_COOPDIRECT:
|
||||
_hover_actions[0] = Menu_Coop_Direct_GetNextButton(current_hovered_option);
|
||||
break;
|
||||
case MENU_COOPCREATE:
|
||||
_hover_actions[0] = Menu_Coop_Create_GetNextButton(current_hovered_option);
|
||||
break;
|
||||
case MENU_COOPSTOCK:
|
||||
case MENU_COOPUSER:
|
||||
case MENU_SOLO:
|
||||
case MENU_SOLOUSER:
|
||||
_hover_actions[0] = Menu_Maps_GetNextButton(current_hovered_option);
|
||||
|
@ -460,6 +466,23 @@ void() _sui_menukey_uparrow =
|
|||
case MENU_MAIN:
|
||||
_hover_actions[0] = Menu_Main_GetPreviousButton(current_hovered_option);
|
||||
break;
|
||||
case MENU_COOP:
|
||||
_hover_actions[0] = Menu_Coop_GetPreviousButton(current_hovered_option);
|
||||
break;
|
||||
case MENU_COOPJOIN:
|
||||
_hover_actions[0] = Menu_Coop_Join_GetPreviousButton(current_hovered_option);
|
||||
break;
|
||||
case MENU_COOPBROWSE:
|
||||
_hover_actions[0] = Menu_Coop_Browse_GetPreviousButton(current_hovered_option);
|
||||
break;
|
||||
case MENU_COOPDIRECT:
|
||||
_hover_actions[0] = Menu_Coop_Direct_GetPreviousButton(current_hovered_option);
|
||||
break;
|
||||
case MENU_COOPCREATE:
|
||||
_hover_actions[0] = Menu_Coop_Create_GetPreviousButton(current_hovered_option);
|
||||
break;
|
||||
case MENU_COOPSTOCK:
|
||||
case MENU_COOPUSER:
|
||||
case MENU_SOLO:
|
||||
case MENU_SOLOUSER:
|
||||
_hover_actions[0] = Menu_Maps_GetPreviousButton(current_hovered_option);
|
||||
|
|
Loading…
Reference in a new issue