/* TopMenu that allows users to browse categories of options. Adds core options to the general category where players can cycle the value of each core option. */ static TopMenu optionsMenu; static TopMenuObject catGeneral; static TopMenuObject itemsGeneral[OPTION_COUNT]; static bool cameFromOptionsMenu[MAXPLAYERS + 1]; // =====[ PUBLIC ]===== void DisplayOptionsMenu(int client, TopMenuPosition position = TopMenuPosition_Start) { optionsMenu.Display(client, position); cameFromOptionsMenu[client] = false; } TopMenu GetOptionsTopMenu() { return optionsMenu; } bool GetCameFromOptionsMenu(int client) { return cameFromOptionsMenu[client]; } // =====[ LISTENERS ]===== void OnAllPluginsLoaded_OptionsMenu() { optionsMenu = new TopMenu(TopMenuHandler_Options); Call_GOKZ_OnOptionsMenuCreated(optionsMenu); Call_GOKZ_OnOptionsMenuReady(optionsMenu); } void OnConfigsExecuted_OptionsMenu() { SortOptionsMenu(); } void OnOptionsMenuCreated_OptionsMenu() { catGeneral = optionsMenu.AddCategory(GENERAL_OPTION_CATEGORY, TopMenuHandler_Options); } void OnOptionsMenuReady_OptionsMenu() { for (int option = 0; option < view_as(OPTION_COUNT); option++) { if (option == view_as(Option_Style)) { continue; // TODO Currently hard-coded to skip style } itemsGeneral[option] = optionsMenu.AddItem(gC_CoreOptionNames[option], TopMenuHandler_General, catGeneral); } } // =====[ HANDLER ]===== public void TopMenuHandler_Options(TopMenu topmenu, TopMenuAction action, TopMenuObject topobj_id, int param, char[] buffer, int maxlength) { if (action == TopMenuAction_DisplayOption || action == TopMenuAction_DisplayTitle) { if (topobj_id == INVALID_TOPMENUOBJECT) { Format(buffer, maxlength, "%T", "Options Menu - Title", param); } else if (topobj_id == catGeneral) { Format(buffer, maxlength, "%T", "Options Menu - General", param); } } } public void TopMenuHandler_General(TopMenu topmenu, TopMenuAction action, TopMenuObject topobj_id, int param, char[] buffer, int maxlength) { Option option = OPTION_INVALID; for (int i = 0; i < view_as(OPTION_COUNT); i++) { if (topobj_id == itemsGeneral[i]) { option = view_as