1+ static TopMenu g_adminMenu = null ;
2+
13static TopMenuObject g_classManagerCategory = INVALID_TOPMENUOBJECT ;
24static TopMenuObject g_menuItemClasses [Class_Rocket + 1 ] = {INVALID_TOPMENUOBJECT , ...};
35
46static int g_selectedClass [MAXPLAYERS + 1 ] = {Class_Unknown , ...};
57static int g_selectedLimit [MAXPLAYERS + 1 ] = {- 1 , ...};
68
7- static char teamNames [][] = {ALLIES , AXIS };
8- static char classNames [][] = {RIFLEMAN , ASSAULT , SUPPORT , SNIPER , MG , ROCKET };
9+ void AdminMenu_Create () {
10+ TopMenu topMenu = GetAdminTopMenu ();
11+
12+ if (LibraryExists (ADMIN_MENU ) && topMenu != null ) {
13+ OnAdminMenuReady (topMenu );
14+ }
15+ }
16+
17+ void AdminMenu_Destroy () {
18+ g_adminMenu = null ;
19+ }
20+
21+ void AdminMenu_OnReady (Handle topMenuHandle ) {
22+ TopMenu topMenu = TopMenu .FromHandle (topMenuHandle );
23+
24+ if (topMenu == g_adminMenu ) {
25+ return ;
26+ }
27+
28+ g_adminMenu = topMenu ;
29+
30+ AdminMenu_Fill ();
31+ }
932
10- void AddClassManagerToAdminMenu () {
11- g_classManagerCategory = g_adminMenu .AddCategory (CLASS_MANAGER , TopMenuHandler_ClassManager );
33+ void AdminMenu_Fill () {
34+ g_classManagerCategory = g_adminMenu .AddCategory (CLASS_MANAGER , AdminMenuHandler_ClassManager );
1235
1336 if (g_classManagerCategory == INVALID_TOPMENUOBJECT ) {
1437 return ;
1538 }
1639
40+ char className [CLASS_NAME_SIZE ];
41+
1742 for (int class = Class_Rifleman ; class <= Class_Rocket ; class ++ ) {
18- g_menuItemClasses [class ] = g_adminMenu .AddItem (classNames [class ], TopMenuHandler_ClassManager , g_classManagerCategory );
43+ Class_GetName (class , className );
44+
45+ g_menuItemClasses [class ] = g_adminMenu .AddItem (className , AdminMenuHandler_ClassManager , g_classManagerCategory );
1946 }
2047}
2148
22- public void TopMenuHandler_ClassManager (TopMenu topmenu , TopMenuAction action , TopMenuObject topobj_id , int param , char [] buffer , int maxlength ) {
49+ public void AdminMenuHandler_ClassManager (TopMenu topmenu , TopMenuAction action , TopMenuObject topobj_id , int param , char [] buffer , int maxlength ) {
2350 if (action == TopMenuAction_DisplayOption ) {
2451 if (topobj_id == g_classManagerCategory ) {
2552 Format (buffer , maxlength , " %T " , CLASS_MANAGER , param );
2653
2754 return ;
2855 }
2956
57+ char className [CLASS_NAME_SIZE ];
58+
3059 for (int class = Class_Rifleman ; class <= Class_Rocket ; class ++ ) {
3160 if (topobj_id == g_menuItemClasses [class ]) {
32- Format (buffer , maxlength , " %T " , classNames [class ], param );
61+ Class_GetName (class , className );
62+ Format (buffer , maxlength , " %T " , className , param );
3363
3464 break ;
3565 }
@@ -42,22 +72,22 @@ public void TopMenuHandler_ClassManager(TopMenu topmenu, TopMenuAction action, T
4272 for (int class = Class_Rifleman ; class <= Class_Rocket ; class ++ ) {
4373 if (topobj_id == g_menuItemClasses [class ]) {
4474 g_selectedClass [param ] = class ;
45- CreateClassActionMenu (param );
75+ Menu_ClassAction (param );
4676
4777 break ;
4878 }
4979 }
5080 }
5181}
5282
53- void CreateClassActionMenu (int client ) {
83+ void Menu_ClassAction (int client ) {
5484 Menu menu = new Menu (MenuHandler_ClassAction );
5585
5686 menu .SetTitle (" %T " , SELECT_ACTION , client );
5787
58- AddTranslatedMenuItem (menu , ENABLE_CLASS , ENABLE_CLASS , client );
59- AddTranslatedMenuItem (menu , DISABLE_CLASS , DISABLE_CLASS , client );
60- AddTranslatedMenuItem (menu , SET_CLASS_LIMIT , SET_CLASS_LIMIT , client );
88+ Menu_AddItem (menu , ENABLE_CLASS , ENABLE_CLASS , client );
89+ Menu_AddItem (menu , DISABLE_CLASS , DISABLE_CLASS , client );
90+ Menu_AddItem (menu , SET_CLASS_LIMIT , SET_CLASS_LIMIT , client );
6191
6292 menu .ExitBackButton = true ;
6393 menu .Display (client , MENU_TIME_FOREVER );
@@ -70,15 +100,15 @@ int MenuHandler_ClassAction(Menu menu, MenuAction action, int param1, int param2
70100 menu .GetItem (param2 , info , sizeof (info ));
71101
72102 if (StrEqual (info , ENABLE_CLASS )) {
73- g_selectedLimit [param1 ] = - 1 ;
103+ g_selectedLimit [param1 ] = CLASS_UNLIMITED ;
74104
75- CreateTeamMenu (param1 );
105+ Menu_TeamAction (param1 );
76106 } else if (StrEqual (info , DISABLE_CLASS )) {
77- g_selectedLimit [param1 ] = 0 ;
107+ g_selectedLimit [param1 ] = CLASS_DISABLED ;
78108
79- CreateTeamMenu (param1 );
109+ Menu_TeamAction (param1 );
80110 } else if (StrEqual (info , SET_CLASS_LIMIT )) {
81- CreateClassLimitMenu (param1 );
111+ Menu_ClassLimit (param1 );
82112 }
83113 } else {
84114 MenuHandler_Default (menu , action , param1 , param2 );
@@ -87,7 +117,7 @@ int MenuHandler_ClassAction(Menu menu, MenuAction action, int param1, int param2
87117 return 0 ;
88118}
89119
90- void CreateClassLimitMenu (int client ) {
120+ void Menu_ClassLimit (int client ) {
91121 Menu menu = new Menu (MenuHandler_ClassLimit );
92122 char info [TEXT_BUFFER_MAX_SIZE ];
93123
@@ -110,22 +140,22 @@ int MenuHandler_ClassLimit(Menu menu, MenuAction action, int param1, int param2)
110140 menu .GetItem (param2 , info , sizeof (info ));
111141 g_selectedLimit [param1 ] = StringToInt (info );
112142
113- CreateTeamMenu (param1 );
143+ Menu_TeamAction (param1 );
114144 } else {
115145 MenuHandler_Default (menu , action , param1 , param2 );
116146 }
117147
118148 return 0 ;
119149}
120150
121- void CreateTeamMenu (int client ) {
151+ void Menu_TeamAction (int client ) {
122152 Menu menu = new Menu (MenuHandler_TeamAction );
123153
124154 menu .SetTitle (" %T " , " Select team" , client );
125155
126- AddTranslatedMenuItem (menu , ALLIES , ALLIES , client );
127- AddTranslatedMenuItem (menu , AXIS , AXIS , client );
128- AddTranslatedMenuItem (menu , BOTH_TEAMS , BOTH_TEAMS , client );
156+ Menu_AddItem (menu , ALLIES , ALLIES , client );
157+ Menu_AddItem (menu , AXIS , AXIS , client );
158+ Menu_AddItem (menu , BOTH_TEAMS , BOTH_TEAMS , client );
129159
130160 menu .ExitBackButton = true ;
131161 menu .Display (client , MENU_TIME_FOREVER );
@@ -140,16 +170,12 @@ int MenuHandler_TeamAction(Menu menu, MenuAction action, int param1, int param2)
140170 menu .GetItem (param2 , info , sizeof (info ));
141171
142172 if (StrEqual (info , ALLIES )) {
143- SetConVarValue (Team_Allies , class , limit );
144- NotifyAboutClassLimitChange (param1 , Team_Allies , class , limit );
173+ UseCase_ChangeClassLimit (param1 , Team_Allies , class , limit );
145174 } else if (StrEqual (info , AXIS )) {
146- SetConVarValue (Team_Axis , class , limit );
147- NotifyAboutClassLimitChange (param1 , Team_Axis , class , limit );
175+ UseCase_ChangeClassLimit (param1 , Team_Axis , class , limit );
148176 } else if (StrEqual (info , BOTH_TEAMS )) {
149- SetConVarValue (Team_Allies , class , limit );
150- NotifyAboutClassLimitChange (param1 , Team_Allies , class , limit );
151- SetConVarValue (Team_Axis , class , limit );
152- NotifyAboutClassLimitChange (param1 , Team_Axis , class , limit );
177+ UseCase_ChangeClassLimit (param1 , Team_Allies , class , limit );
178+ UseCase_ChangeClassLimit (param1 , Team_Axis , class , limit );
153179 }
154180 } else {
155181 MenuHandler_Default (menu , action , param1 , param2 );
@@ -168,7 +194,7 @@ void MenuHandler_Default(Menu menu, MenuAction action, int param1, int param2) {
168194 }
169195}
170196
171- void AddTranslatedMenuItem (Menu menu , char [] info , any ...) {
197+ void Menu_AddItem (Menu menu , char [] info , any ...) {
172198 char item [TEXT_BUFFER_MAX_SIZE ];
173199
174200 VFormat (item , sizeof (item ), " %T " , 3 );
0 commit comments