|
dvander@790
|
1 |
/** |
|
dvander@790
|
2 |
* vim: set ts=4 : |
|
ds@1330
|
3 |
* ============================================================================= |
|
dvander@790
|
4 |
* SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved. |
|
ds@1330
|
5 |
* ============================================================================= |
|
ds@1330
|
6 |
* |
|
ds@1330
|
7 |
* This file is part of the SourceMod/SourcePawn SDK. |
|
dvander@790
|
8 |
* |
|
ds@1330
|
9 |
* This program is free software; you can redistribute it and/or modify it under |
|
ds@1330
|
10 |
* the terms of the GNU General Public License, version 3.0, as published by the |
|
ds@1330
|
11 |
* Free Software Foundation. |
|
ds@1330
|
12 |
* |
|
ds@1330
|
13 |
* This program is distributed in the hope that it will be useful, but WITHOUT |
|
ds@1330
|
14 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
|
ds@1330
|
15 |
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
|
ds@1330
|
16 |
* details. |
|
ds@1330
|
17 |
* |
|
ds@1330
|
18 |
* You should have received a copy of the GNU General Public License along with |
|
ds@1330
|
19 |
* this program. If not, see <http://www.gnu.org/licenses/>. |
|
ds@1330
|
20 |
* |
|
ds@1330
|
21 |
* As a special exception, AlliedModders LLC gives you permission to link the |
|
ds@1330
|
22 |
* code of this program (as well as its derivative works) to "Half-Life 2," the |
|
ds@1330
|
23 |
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software |
|
ds@1330
|
24 |
* by the Valve Corporation. You must obey the GNU General Public License in |
|
ds@1330
|
25 |
* all respects for all other code used. Additionally, AlliedModders LLC grants |
|
ds@1330
|
26 |
* this exception to all derivative works. AlliedModders LLC defines further |
|
ds@1330
|
27 |
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), |
|
ds@1330
|
28 |
* or <http://www.sourcemod.net/license.php>. |
|
dvander@790
|
29 |
* |
|
dvander@790
|
30 |
* Version: $Id$ |
|
dvander@790
|
31 |
*/ |
|
dvander@790
|
32 |
|
|
dvander@790
|
33 |
#if defined _menus_included |
|
dvander@790
|
34 |
#endinput |
|
dvander@790
|
35 |
#endif |
|
dvander@790
|
36 |
#define _menus_included |
|
dvander@790
|
37 |
|
|
dvander@790
|
38 |
/** |
|
dvander@790
|
39 |
* Low-level drawing style of the menu. |
|
dvander@790
|
40 |
*/ |
|
dvander@790
|
41 |
enum MenuStyle |
|
dvander@790
|
42 |
{ |
|
dvander@790
|
43 |
MenuStyle_Default = 0, /**< The "default" menu style for the mod */ |
|
dvander@790
|
44 |
MenuStyle_Valve = 1, /**< The Valve provided menu style (Used on HL2DM) */ |
|
dvander@790
|
45 |
MenuStyle_Radio = 2, /**< The simpler menu style commonly used on CS:S */ |
|
dvander@790
|
46 |
}; |
|
dvander@790
|
47 |
|
|
dvander@790
|
48 |
/** |
|
dvander@790
|
49 |
* Different actions for the menu "pump" callback |
|
dvander@790
|
50 |
*/ |
|
dvander@790
|
51 |
enum MenuAction |
|
dvander@790
|
52 |
{ |
|
dvander@790
|
53 |
MenuAction_Start = (1<<0), /**< A menu has been started (nothing passed) */ |
|
dvander@790
|
54 |
MenuAction_Display = (1<<1), /**< A menu is about to be displayed (param1=client, param2=MenuPanel Handle) */ |
|
dvander@790
|
55 |
MenuAction_Select = (1<<2), /**< An item was selected (param1=client, param2=item) */ |
|
dvander@796
|
56 |
MenuAction_Cancel = (1<<3), /**< The menu was cancelled (param1=client, param2=reason) */ |
|
dvander@1005
|
57 |
MenuAction_End = (1<<4), /**< A menu display has fully ended (param1=reason, param2=cancel reason) */ |
|
dvander@1271
|
58 |
MenuAction_VoteEnd = (1<<5), /**< (VOTE ONLY): A vote sequence has succeeded (param1=chosen item) |
|
dvander@1271
|
59 |
This is not called if SetVoteResultCallback has been used on the menu. */ |
|
dvander@885
|
60 |
MenuAction_VoteStart = (1<<6), /**< (VOTE ONLY): A vote sequence has started (nothing passed) */ |
|
dvander@1296
|
61 |
MenuAction_VoteCancel = (1<<7), /**< (VOTE ONLY): A vote sequence has been cancelled (param1=reason) */ |
|
dvander@1007
|
62 |
MenuAction_DrawItem = (1<<8), /**< An item is being drawn; return the new style (param1=client, param2=item) */ |
|
dvander@1484
|
63 |
MenuAction_DisplayItem = (1<<9),/**< Item text is being drawn to the display (param1=client, param2=item) |
|
dvander@1163
|
64 |
To change the text, use RedrawMenuItem(). |
|
dvander@1163
|
65 |
If you do so, return its return value. Otherwise, return 0. |
|
dvander@1163
|
66 |
*/ |
|
dvander@790
|
67 |
}; |
|
dvander@790
|
68 |
|
|
dvander@790
|
69 |
/** Default menu actions */ |
|
dvander@790
|
70 |
#define MENU_ACTIONS_DEFAULT MenuAction_Select|MenuAction_Cancel|MenuAction_End |
|
dvander@790
|
71 |
/** All menu actions */ |
|
dvander@1289
|
72 |
#define MENU_ACTIONS_ALL MenuAction:0xFFFFFFFF |
|
dvander@790
|
73 |
|
|
dvander@790
|
74 |
#define MENU_NO_PAGINATION 0 /**< Menu should not be paginated (10 items max) */ |
|
dvander@790
|
75 |
#define MENU_TIME_FOREVER 0 /**< Menu should be displayed as long as possible */ |
|
dvander@790
|
76 |
|
|
dvander@790
|
77 |
#define ITEMDRAW_DEFAULT (0) /**< Item should be drawn normally */ |
|
dvander@790
|
78 |
#define ITEMDRAW_DISABLED (1<<0) /**< Item is drawn but not selectable */ |
|
dvander@790
|
79 |
#define ITEMDRAW_RAWLINE (1<<1) /**< Item should be a raw line, without a slot */ |
|
dvander@790
|
80 |
#define ITEMDRAW_NOTEXT (1<<2) /**< No text should be drawn */ |
|
dvander@790
|
81 |
#define ITEMDRAW_SPACER (1<<3) /**< Item should be drawn as a spacer, if possible */ |
|
dvander@790
|
82 |
#define ITEMDRAW_IGNORE ((1<<1)|(1<<2)) /**< Item should be completely ignored (rawline + notext) */ |
|
dvander@790
|
83 |
#define ITEMDRAW_CONTROL (1<<4) /**< Item is control text (back/next/exit) */ |
|
dvander@790
|
84 |
|
|
dvander@1653
|
85 |
#define MENUFLAG_BUTTON_EXIT (1<<0) /**< Menu has an "exit" button (default if paginated) */ |
|
dvander@1259
|
86 |
#define MENUFLAG_BUTTON_EXITBACK (1<<1) /**< Menu has an "exit back" button */ |
|
dvander@1259
|
87 |
#define MENUFLAG_NO_SOUND (1<<2) /**< Menu will not have any select sounds */ |
|
dvander@1259
|
88 |
|
|
dvander@1269
|
89 |
#define VOTEINFO_CLIENT_INDEX 0 /**< Client index */ |
|
dvander@1269
|
90 |
#define VOTEINFO_CLIENT_ITEM 1 /**< Item the client selected, or -1 for none */ |
|
dvander@1269
|
91 |
#define VOTEINFO_ITEM_INDEX 0 /**< Item index */ |
|
dvander@1269
|
92 |
#define VOTEINFO_ITEM_VOTES 1 /**< Number of votes for the item */ |
|
dvander@1269
|
93 |
|
|
dvander@790
|
94 |
/** |
|
dvander@1296
|
95 |
* Reasons a menu can be cancelled (MenuAction_Cancel). |
|
dvander@790
|
96 |
*/ |
|
dvander@790
|
97 |
enum |
|
dvander@790
|
98 |
{ |
|
dvander@1005
|
99 |
MenuCancel_Disconnected = -1, /**< Client dropped from the server */ |
|
dvander@1005
|
100 |
MenuCancel_Interrupted = -2, /**< Client was interrupted with another menu */ |
|
dvander@1005
|
101 |
MenuCancel_Exit = -3, /**< Client exited via "exit" */ |
|
dvander@1005
|
102 |
MenuCancel_NoDisplay = -4, /**< Menu could not be displayed to the client */ |
|
dvander@1005
|
103 |
MenuCancel_Timeout = -5, /**< Menu timed out */ |
|
dvander@1005
|
104 |
MenuCancel_ExitBack = -6, /**< Client selected "exit back" on a paginated menu */ |
|
dvander@790
|
105 |
}; |
|
dvander@790
|
106 |
|
|
dvander@790
|
107 |
/** |
|
dvander@1296
|
108 |
* Reasons a vote can be cancelled (MenuAction_VoteCancel). |
|
dvander@1296
|
109 |
*/ |
|
dvander@1296
|
110 |
enum |
|
dvander@1296
|
111 |
{ |
|
dvander@1296
|
112 |
VoteCancel_Generic = -1, /**< Vote was generically cancelled. */ |
|
dvander@1296
|
113 |
VoteCancel_NoVotes = -2, /**< Vote did not receive any votes. */ |
|
dvander@1296
|
114 |
}; |
|
dvander@1296
|
115 |
|
|
dvander@1296
|
116 |
/** |
|
dvander@1296
|
117 |
* Reasons a menu ended (MenuAction_End). |
|
dvander@997
|
118 |
*/ |
|
dvander@1010
|
119 |
enum |
|
dvander@997
|
120 |
{ |
|
dvander@1005
|
121 |
MenuEnd_Selected = 0, /**< Menu item was selected */ |
|
dvander@1005
|
122 |
MenuEnd_VotingDone = -1, /**< Voting finished */ |
|
dvander@1005
|
123 |
MenuEnd_VotingCancelled = -2, /**< Voting was cancelled */ |
|
dvander@1005
|
124 |
MenuEnd_Cancelled = -3, /**< Menu was cancelled (reason in param2) */ |
|
dvander@1005
|
125 |
MenuEnd_Exit = -4, /**< Menu was cleanly exited via "exit" */ |
|
dvander@1005
|
126 |
MenuEnd_ExitBack = -5, /**< Menu was cleanly exited via "back" */ |
|
dvander@997
|
127 |
}; |
|
dvander@997
|
128 |
|
|
dvander@997
|
129 |
/** |
|
dvander@790
|
130 |
* Describes a menu's source |
|
dvander@790
|
131 |
*/ |
|
dvander@790
|
132 |
enum MenuSource |
|
dvander@790
|
133 |
{ |
|
dvander@790
|
134 |
MenuSource_None = 0, /**< No menu is being displayed */ |
|
dvander@790
|
135 |
MenuSource_External = 1, /**< External menu */ |
|
dvander@790
|
136 |
MenuSource_Normal = 2, /**< A basic menu is being displayed */ |
|
dvander@790
|
137 |
MenuSource_RawPanel = 3, /**< A display is active, but it is not tied to a menu */ |
|
dvander@790
|
138 |
}; |
|
dvander@790
|
139 |
|
|
dvander@790
|
140 |
/** |
|
dvander@790
|
141 |
* Called when a menu action is completed. |
|
dvander@790
|
142 |
* |
|
dvander@790
|
143 |
* @param menu The menu being acted upon. |
|
dvander@790
|
144 |
* @param action The action of the menu. |
|
dvander@790
|
145 |
* @param param1 First action parameter (usually the client). |
|
dvander@790
|
146 |
* @param param2 Second action parameter (usually the item). |
|
dvander@790
|
147 |
* @noreturn |
|
dvander@790
|
148 |
*/ |
|
dvander@790
|
149 |
functag MenuHandler public(Handle:menu, MenuAction:action, param1, param2); |
|
dvander@790
|
150 |
|
|
dvander@790
|
151 |
/** |
|
dvander@790
|
152 |
* Creates a new, empty menu using the default style. |
|
dvander@790
|
153 |
* |
|
dvander@790
|
154 |
* @param handler Function which will receive menu actions. |
|
dvander@790
|
155 |
* @param actions Optionally set which actions to receive. Select, |
|
dvander@790
|
156 |
* Cancel, and End will always be received regardless |
|
dvander@790
|
157 |
* of whether they are set or not. They are also |
|
dvander@790
|
158 |
* the only default actions. |
|
dvander@790
|
159 |
* @return A new menu Handle. |
|
dvander@790
|
160 |
*/ |
|
dvander@790
|
161 |
native Handle:CreateMenu(MenuHandler:handler, MenuAction:actions=MENU_ACTIONS_DEFAULT); |
|
dvander@790
|
162 |
|
|
dvander@790
|
163 |
/** |
|
dvander@790
|
164 |
* Displays a menu to a client. |
|
dvander@790
|
165 |
* |
|
dvander@790
|
166 |
* @param menu Menu Handle. |
|
dvander@790
|
167 |
* @param client Client index. |
|
dvander@790
|
168 |
* @param time Maximum time to leave menu on the screen. |
|
dvander@790
|
169 |
* @return True on success, false on failure. |
|
dvander@790
|
170 |
* @error Invalid Handle or client not in game. |
|
dvander@790
|
171 |
*/ |
|
dvander@790
|
172 |
native bool:DisplayMenu(Handle:menu, client, time); |
|
dvander@790
|
173 |
|
|
dvander@790
|
174 |
/** |
|
dvander@1484
|
175 |
* Displays a menu to a client, starting from the given item. |
|
dvander@1484
|
176 |
* |
|
dvander@1484
|
177 |
* @param menu Menu Handle. |
|
dvander@1484
|
178 |
* @param client Client index. |
|
dvander@1484
|
179 |
* @param first_item First item to begin drawing from. |
|
dvander@1484
|
180 |
* @param time Maximum time to leave menu on the screen. |
|
dvander@1484
|
181 |
* @return True on success, false on failure. |
|
dvander@1484
|
182 |
* @error Invalid Handle or client not in game. |
|
dvander@1484
|
183 |
*/ |
|
dvander@1484
|
184 |
native bool:DisplayMenuAtItem(Handle:menu, client, first_item, time); |
|
dvander@1484
|
185 |
|
|
dvander@1484
|
186 |
/** |
|
dvander@790
|
187 |
* Appends a new item to the end of a menu. |
|
dvander@790
|
188 |
* |
|
dvander@790
|
189 |
* @param menu Menu Handle. |
|
dvander@790
|
190 |
* @param info Item information string. |
|
dvander@790
|
191 |
* @param display Default item display string. |
|
dvander@1136
|
192 |
* @param style Drawing style flags. Anything other than DEFAULT or |
|
dvander@1136
|
193 |
* DISABLED will be completely ignored when paginating. |
|
dvander@790
|
194 |
* @return True on success, false on failure. |
|
dvander@790
|
195 |
* @error Invalid Handle or item limit reached. |
|
dvander@790
|
196 |
*/ |
|
dvander@790
|
197 |
native AddMenuItem(Handle:menu, |
|
dvander@790
|
198 |
const String:info[], |
|
dvander@790
|
199 |
const String:display[], |
|
dvander@790
|
200 |
style=ITEMDRAW_DEFAULT); |
|
dvander@790
|
201 |
|
|
dvander@790
|
202 |
/** |
|
dvander@790
|
203 |
* Inserts an item into the menu before a certain position; the new item will |
|
dvander@790
|
204 |
* be at the given position and all next items pushed forward. |
|
dvander@790
|
205 |
* |
|
dvander@790
|
206 |
* @param menu Menu Handle. |
|
dvander@790
|
207 |
* @param position Position, starting from 0. |
|
dvander@790
|
208 |
* @param info Item information string. |
|
dvander@790
|
209 |
* @param display Default item display string. |
|
dvander@1136
|
210 |
* @param style Drawing style flags. Anything other than DEFAULT or |
|
dvander@1136
|
211 |
* DISABLED will be completely ignored when paginating. |
|
dvander@790
|
212 |
* @return True on success, false on failure. |
|
dvander@790
|
213 |
* @error Invalid Handle or menu position. |
|
dvander@790
|
214 |
*/ |
|
dvander@790
|
215 |
native bool:InsertMenuItem(Handle:menu, |
|
dvander@790
|
216 |
position, |
|
dvander@790
|
217 |
const String:info[], |
|
dvander@790
|
218 |
const String:display[], |
|
dvander@790
|
219 |
style=ITEMDRAW_DEFAULT); |
|
dvander@790
|
220 |
|
|
dvander@790
|
221 |
/** |
|
dvander@790
|
222 |
* Removes an item from the menu. |
|
dvander@790
|
223 |
* |
|
dvander@790
|
224 |
* @param menu Menu Handle. |
|
dvander@790
|
225 |
* @param position Position, starting from 0. |
|
dvander@790
|
226 |
* @return True on success, false on failure. |
|
dvander@790
|
227 |
* @error Invalid Handle or menu position. |
|
dvander@790
|
228 |
*/ |
|
dvander@790
|
229 |
native bool:RemoveMenuItem(Handle:menu, position); |
|
dvander@790
|
230 |
|
|
dvander@790
|
231 |
/** |
|
dvander@790
|
232 |
* Removes all items from a menu. |
|
dvander@790
|
233 |
* |
|
dvander@790
|
234 |
* @param menu Menu Handle. |
|
dvander@790
|
235 |
* @noreturn |
|
dvander@790
|
236 |
* @error Invalid Handle or menu position. |
|
dvander@790
|
237 |
*/ |
|
dvander@790
|
238 |
native RemoveAllMenuItems(Handle:menu); |
|
dvander@790
|
239 |
|
|
dvander@790
|
240 |
/** |
|
dvander@790
|
241 |
* Retrieves information about a menu item. |
|
dvander@790
|
242 |
* |
|
dvander@790
|
243 |
* @param menu Menu Handle. |
|
dvander@790
|
244 |
* @param position Position, starting from 0. |
|
dvander@790
|
245 |
* @param infoBuf Info buffer. |
|
dvander@790
|
246 |
* @param infoBufLen Maximum length of the info buffer. |
|
dvander@790
|
247 |
* @param style By-reference variable to store drawing flags. |
|
dvander@790
|
248 |
* @param dispBuf Display buffer. |
|
dvander@790
|
249 |
* @param dispBufLen Maximum length of the display buffer. |
|
dvander@790
|
250 |
* @return True on success, false if position is invalid. |
|
dvander@790
|
251 |
* @error Invalid Handle. |
|
dvander@790
|
252 |
*/ |
|
dvander@1484
|
253 |
native bool:GetMenuItem(Handle:menu, |
|
dvander@1484
|
254 |
position, |
|
dvander@1484
|
255 |
String:infoBuf[], |
|
dvander@1484
|
256 |
infoBufLen, |
|
dvander@1484
|
257 |
&style=0, |
|
dvander@1484
|
258 |
String:dispBuf[]="", |
|
dvander@1484
|
259 |
dispBufLen=0); |
|
dvander@1484
|
260 |
|
|
dvander@1484
|
261 |
/** |
|
dvander@1484
|
262 |
* Returns the first item on the page of a currently selected menu. |
|
dvander@1484
|
263 |
* |
|
dvander@1484
|
264 |
* This is only valid inside a MenuAction_Select callback. |
|
dvander@1484
|
265 |
* |
|
dvander@1484
|
266 |
* @return First item number on the page the client was viewing |
|
dvander@1484
|
267 |
* before selecting the item in the callback. This can |
|
dvander@1484
|
268 |
* be used to re-display the menu from the original |
|
dvander@1484
|
269 |
* position. |
|
dvander@1484
|
270 |
* @error Not called from inside a MenuAction_Select callback. |
|
dvander@1484
|
271 |
*/ |
|
dvander@1484
|
272 |
native GetMenuSelectionPosition(); |
|
dvander@790
|
273 |
|
|
dvander@790
|
274 |
/** |
|
dvander@790
|
275 |
* Returns the number of items in a menu. |
|
dvander@790
|
276 |
* |
|
dvander@790
|
277 |
* @param menu Menu Handle. |
|
dvander@790
|
278 |
* @return Number of items in the menu. |
|
dvander@790
|
279 |
* @error Invalid Handle. |
|
dvander@790
|
280 |
*/ |
|
dvander@790
|
281 |
native GetMenuItemCount(Handle:menu); |
|
dvander@790
|
282 |
|
|
dvander@790
|
283 |
/** |
|
dvander@790
|
284 |
* Sets whether the menu should be paginated or not. |
|
dvander@790
|
285 |
* |
|
dvander@1653
|
286 |
* If itemsPerPage is MENU_NO_PAGINATION, and the exit button flag is set, |
|
dvander@1653
|
287 |
* then the exit button flag is removed. It can be re-applied if desired. |
|
dvander@1653
|
288 |
* |
|
dvander@790
|
289 |
* @param menu Handle to the menu. |
|
dvander@790
|
290 |
* @param itemsPerPage Number of items per page, or MENU_NO_PAGINATION. |
|
dvander@1653
|
291 |
* @return True on success, false if pagination is too high or |
|
dvander@1653
|
292 |
* low. |
|
dvander@790
|
293 |
* @error Invalid Handle. |
|
dvander@790
|
294 |
*/ |
|
dvander@790
|
295 |
native bool:SetMenuPagination(Handle:menu, itemsPerPage); |
|
dvander@790
|
296 |
|
|
dvander@790
|
297 |
/** |
|
dvander@790
|
298 |
* Returns a menu's pagination setting. |
|
dvander@790
|
299 |
* |
|
dvander@790
|
300 |
* @param menu Handle to the menu. |
|
dvander@790
|
301 |
* @return Pagination setting. |
|
dvander@790
|
302 |
* @error Invalid Handle. |
|
dvander@790
|
303 |
*/ |
|
dvander@790
|
304 |
native GetMenuPagination(Handle:menu); |
|
dvander@790
|
305 |
|
|
dvander@790
|
306 |
/** |
|
dvander@790
|
307 |
* Returns a menu's MenuStyle Handle. The Handle |
|
dvander@790
|
308 |
* is global and cannot be freed. |
|
dvander@790
|
309 |
* |
|
dvander@790
|
310 |
* @param menu Handle to the menu. |
|
dvander@790
|
311 |
* @return Handle to the menu's draw style. |
|
dvander@790
|
312 |
* @error Invalid Handle. |
|
dvander@790
|
313 |
*/ |
|
dvander@790
|
314 |
native Handle:GetMenuStyle(Handle:menu); |
|
dvander@790
|
315 |
|
|
dvander@790
|
316 |
/** |
|
dvander@790
|
317 |
* Sets the menu's default title/instruction message. |
|
dvander@790
|
318 |
* |
|
dvander@790
|
319 |
* @param menu Menu Handle. |
|
dvander@790
|
320 |
* @param fmt Message string format |
|
dvander@790
|
321 |
* @param ... Message string arguments. |
|
dvander@790
|
322 |
* @noreturn |
|
dvander@790
|
323 |
* @error Invalid Handle. |
|
dvander@790
|
324 |
*/ |
|
dvander@790
|
325 |
native SetMenuTitle(Handle:menu, const String:fmt[], any:...); |
|
dvander@790
|
326 |
|
|
dvander@790
|
327 |
/** |
|
dvander@1290
|
328 |
* Returns the text of a menu's title. |
|
dvander@1290
|
329 |
* |
|
dvander@1290
|
330 |
* @param menu Menu Handle. |
|
dvander@1290
|
331 |
* @param buffer Buffer to store title. |
|
dvander@1290
|
332 |
* @param maxlength Maximum length of the buffer. |
|
dvander@1290
|
333 |
* @return Number of bytes written. |
|
dvander@1290
|
334 |
* @error Invalid Handle/ |
|
dvander@1290
|
335 |
*/ |
|
dvander@1290
|
336 |
native GetMenuTitle(Handle:menu, String:buffer[], maxlength); |
|
dvander@1290
|
337 |
|
|
dvander@1290
|
338 |
/** |
|
dvander@790
|
339 |
* Creates a raw MenuPanel based off the menu's style. |
|
dvander@790
|
340 |
* The Handle must be freed with CloseHandle(). |
|
dvander@790
|
341 |
* |
|
dvander@790
|
342 |
* @return A new MenuPanel Handle. |
|
dvander@790
|
343 |
* @error Invalid Handle. |
|
dvander@790
|
344 |
*/ |
|
dvander@790
|
345 |
native Handle:CreatePanelFromMenu(Handle:menu); |
|
dvander@790
|
346 |
|
|
dvander@790
|
347 |
/** |
|
dvander@790
|
348 |
* Returns whether or not the menu has an exit button. |
|
dvander@790
|
349 |
* By default, menus have an exit button. |
|
dvander@790
|
350 |
* |
|
dvander@790
|
351 |
* @param menu Menu Handle. |
|
dvander@790
|
352 |
* @return True if the menu has an exit button; false otherwise. |
|
dvander@790
|
353 |
* @error Invalid Handle. |
|
dvander@790
|
354 |
*/ |
|
dvander@790
|
355 |
native bool:GetMenuExitButton(Handle:menu); |
|
dvander@790
|
356 |
|
|
dvander@790
|
357 |
/** |
|
dvander@1653
|
358 |
* Sets whether or not the menu has an exit button. By default, paginated menus |
|
dvander@1653
|
359 |
* have an exit button. |
|
dvander@1653
|
360 |
* |
|
dvander@1653
|
361 |
* If a menu's pagination is changed to MENU_NO_PAGINATION, and the pagination |
|
dvander@1653
|
362 |
* was previously a different value, then the Exit button status is changed to |
|
dvander@1653
|
363 |
* false. It must be explicitly re-enabled afterwards. |
|
dvander@1653
|
364 |
* |
|
dvander@1653
|
365 |
* If a non-paginated menu has an exit button, then at most 9 items will be |
|
dvander@1653
|
366 |
* displayed. |
|
dvander@790
|
367 |
* |
|
dvander@790
|
368 |
* @param menu Menu Handle. |
|
dvander@790
|
369 |
* @param button True to enable the button, false to remove it. |
|
dvander@790
|
370 |
* @return True if allowed; false on failure. |
|
dvander@790
|
371 |
* @error Invalid Handle. |
|
dvander@790
|
372 |
*/ |
|
dvander@790
|
373 |
native bool:SetMenuExitButton(Handle:menu, bool:button); |
|
dvander@790
|
374 |
|
|
dvander@790
|
375 |
/** |
|
dvander@1653
|
376 |
* Returns whether or not the menu has an "exit back" button. By default, |
|
dvander@1653
|
377 |
* menus do not have an exit back button. |
|
dvander@1653
|
378 |
* |
|
dvander@1653
|
379 |
* Exit Back buttons appear as "Back" on page 1 of paginated menus and have |
|
dvander@1653
|
380 |
* functionality defined by the user in MenuEnd_ExitBack. |
|
dvander@1005
|
381 |
* |
|
dvander@1005
|
382 |
* @param menu Menu Handle. |
|
dvander@1005
|
383 |
* @return True if the menu has an exit back button; false otherwise. |
|
dvander@1005
|
384 |
* @error Invalid Handle. |
|
dvander@1005
|
385 |
*/ |
|
dvander@1005
|
386 |
native bool:GetMenuExitBackButton(Handle:menu); |
|
dvander@1005
|
387 |
|
|
dvander@1005
|
388 |
/** |
|
dvander@1653
|
389 |
* Sets whether or not the menu has an "exit back" button. By default, menus |
|
dvander@1653
|
390 |
* do not have an exit back button. |
|
dvander@1653
|
391 |
* |
|
dvander@1653
|
392 |
* Exit Back buttons appear as "Back" on page 1 of paginated menus and have |
|
dvander@1653
|
393 |
* functionality defined by the user in MenuEnd_ExitBack. |
|
dvander@1005
|
394 |
* |
|
dvander@1005
|
395 |
* @param menu Menu Handle. |
|
dvander@1005
|
396 |
* @param button True to enable the button, false to remove it. |
|
dvander@1005
|
397 |
* @error Invalid Handle. |
|
dvander@1005
|
398 |
*/ |
|
dvander@1005
|
399 |
native SetMenuExitBackButton(Handle:menu, bool:button); |
|
dvander@1005
|
400 |
|
|
dvander@1005
|
401 |
|
|
dvander@1005
|
402 |
/** |
|
dvander@790
|
403 |
* Cancels a menu from displaying on all clients. While the |
|
dvander@790
|
404 |
* cancellation is in progress, this menu cannot be re-displayed |
|
dvander@790
|
405 |
* to any clients. |
|
dvander@790
|
406 |
* |
|
dvander@790
|
407 |
* The menu may still exist on the client's screen after this command. |
|
dvander@790
|
408 |
* This simply verifies that the menu is not being used anywhere. |
|
dvander@790
|
409 |
* |
|
dvander@885
|
410 |
* If any vote is in progress on a menu, it will be cancelled. |
|
dvander@885
|
411 |
* |
|
dvander@790
|
412 |
* @param menu Menu Handle. |
|
dvander@790
|
413 |
* @noreturn |
|
dvander@790
|
414 |
* @error Invalid Handle. |
|
dvander@790
|
415 |
*/ |
|
dvander@790
|
416 |
native CancelMenu(Handle:menu); |
|
dvander@790
|
417 |
|
|
dvander@790
|
418 |
/** |
|
dvander@1259
|
419 |
* Retrieves a menu's option flags. |
|
dvander@1259
|
420 |
* |
|
dvander@1259
|
421 |
* @param menu Menu Handle. |
|
dvander@1259
|
422 |
* @return A bitstring of MENUFLAG bits. |
|
dvander@1259
|
423 |
* @error Invalid Handle. |
|
dvander@1259
|
424 |
*/ |
|
dvander@1259
|
425 |
native GetMenuOptionFlags(Handle:menu); |
|
dvander@1259
|
426 |
|
|
dvander@1259
|
427 |
/** |
|
dvander@1259
|
428 |
* Sets a menu's option flags. |
|
dvander@1259
|
429 |
* |
|
dvander@1653
|
430 |
* If a certain bit is not supported, it will be stripped before being set. |
|
dvander@1653
|
431 |
* See SetMenuExitButton() for information on Exit buttons. |
|
dvander@1653
|
432 |
* See SetMenuExitBackButton() for information on Exit Back buttons. |
|
dvander@1259
|
433 |
* |
|
dvander@1259
|
434 |
* @param menu Menu Handle. |
|
dvander@1259
|
435 |
* @param flags A new bitstring of MENUFLAG bits. |
|
dvander@1259
|
436 |
* @noreturn |
|
dvander@1259
|
437 |
* @error Invalid Handle. |
|
dvander@1259
|
438 |
*/ |
|
dvander@1259
|
439 |
native SetMenuOptionFlags(Handle:menu, flags); |
|
dvander@1259
|
440 |
|
|
dvander@1259
|
441 |
/** |
|
dvander@1269
|
442 |
* Returns whether a vote is in progress. |
|
dvander@885
|
443 |
* |
|
dvander@1269
|
444 |
* @param menu Deprecated; no longer used. |
|
dvander@885
|
445 |
* @return True if a vote is in progress, false otherwise. |
|
dvander@885
|
446 |
*/ |
|
dvander@1269
|
447 |
native bool:IsVoteInProgress(Handle:menu=INVALID_HANDLE); |
|
dvander@1269
|
448 |
|
|
dvander@1269
|
449 |
/** |
|
dvander@1269
|
450 |
* Cancels the vote in progress. |
|
dvander@1269
|
451 |
* |
|
dvander@1269
|
452 |
* @noreturn |
|
dvander@1269
|
453 |
* @error If no vote is in progress. |
|
dvander@1269
|
454 |
*/ |
|
dvander@1269
|
455 |
native CancelVote(); |
|
dvander@885
|
456 |
|
|
dvander@885
|
457 |
/** |
|
dvander@878
|
458 |
* Broadcasts a menu to a list of clients. The most selected item will be |
|
dvander@878
|
459 |
* returned through MenuAction_End. On a tie, a random item will be returned |
|
dvander@878
|
460 |
* from a list of the tied items. |
|
dvander@790
|
461 |
* |
|
dvander@878
|
462 |
* Note that MenuAction_VoteEnd and MenuAction_VoteStart are both |
|
dvander@878
|
463 |
* default callbacks and do not need to be enabled. |
|
dvander@790
|
464 |
* |
|
dvander@790
|
465 |
* @param menu Menu Handle. |
|
dvander@878
|
466 |
* @param clients Array of clients to broadcast to. |
|
dvander@878
|
467 |
* @param numClients Number of clients in the array. |
|
dvander@790
|
468 |
* @param time Maximum time to leave menu on the screen. |
|
dvander@878
|
469 |
* @return True on success, false if this menu already has a vote session |
|
dvander@878
|
470 |
* in progress. |
|
dvander@1269
|
471 |
* @error Invalid Handle, or a vote is already in progress. |
|
dvander@790
|
472 |
*/ |
|
dvander@878
|
473 |
native bool:VoteMenu(Handle:menu, clients[], numClients, time); |
|
dvander@790
|
474 |
|
|
dvander@790
|
475 |
/** |
|
dvander@878
|
476 |
* Sends a vote menu to all clients. See VoteMenu() for more information. |
|
dvander@790
|
477 |
* |
|
dvander@790
|
478 |
* @param menu Menu Handle. |
|
dvander@790
|
479 |
* @param time Maximum time to leave menu on the screen. |
|
dvander@878
|
480 |
* @return True on success, false if this menu already has a vote session |
|
dvander@878
|
481 |
* in progress. |
|
dvander@790
|
482 |
* @error Invalid Handle. |
|
dvander@790
|
483 |
*/ |
|
dvander@878
|
484 |
stock VoteMenuToAll(Handle:menu, time) |
|
dvander@790
|
485 |
{ |
|
dvander@790
|
486 |
new num = GetMaxClients(); |
|
dvander@790
|
487 |
new total; |
|
dvander@790
|
488 |
decl players[num]; |
|
dvander@790
|
489 |
|
|
dvander@790
|
490 |
for (new i=1; i<=num; i++) |
|
dvander@790
|
491 |
{ |
|
ds@891
|
492 |
if (!IsClientInGame(i)) |
|
dvander@790
|
493 |
{ |
|
dvander@790
|
494 |
continue; |
|
dvander@790
|
495 |
} |
|
dvander@790
|
496 |
players[total++] = i; |
|
dvander@790
|
497 |
} |
|
dvander@790
|
498 |
|
|
dvander@878
|
499 |
return VoteMenu(menu, players, total, time); |
|
dvander@790
|
500 |
} |
|
dvander@1269
|
501 |
/** |
|
dvander@1269
|
502 |
* Callback for when a vote has ended and results are available. |
|
dvander@1269
|
503 |
* |
|
dvander@1271
|
504 |
* @param menu The menu being voted on. |
|
dvander@1269
|
505 |
* @param num_votes Number of votes tallied in total. |
|
dvander@1269
|
506 |
* @param num_clients Number of clients who could vote. |
|
dvander@1269
|
507 |
* @param client_info Array of clients. Use VOTEINFO_CLIENT_ defines. |
|
dvander@1269
|
508 |
* @param num_items Number of unique items that were selected. |
|
dvander@1269
|
509 |
* @param item_info Array of items, sorted by count. Use VOTEINFO_ITEM |
|
dvander@1269
|
510 |
* defines. |
|
dvander@1269
|
511 |
* @noreturn |
|
dvander@1269
|
512 |
*/ |
|
dvander@1271
|
513 |
functag VoteHandler public(Handle:menu, |
|
dvander@1271
|
514 |
num_votes, |
|
dvander@1269
|
515 |
num_clients, |
|
dvander@1269
|
516 |
const client_info[][2], |
|
dvander@1269
|
517 |
num_items, |
|
dvander@1269
|
518 |
const item_info[][2]); |
|
dvander@1269
|
519 |
|
|
dvander@1269
|
520 |
/** |
|
dvander@1269
|
521 |
* Sets an advanced vote handling callback. If this callback is set, |
|
dvander@1269
|
522 |
* MenuAction_VoteEnd will not be called. |
|
dvander@1269
|
523 |
* |
|
dvander@1269
|
524 |
* @param menu Menu Handle. |
|
dvander@1269
|
525 |
* @param callback Callback function. |
|
dvander@1269
|
526 |
* @noreturn |
|
dvander@1269
|
527 |
* @error Invalid Handle or callback. |
|
dvander@1269
|
528 |
*/ |
|
dvander@1269
|
529 |
native SetVoteResultCallback(Handle:menu, VoteHandler:callback); |
|
dvander@790
|
530 |
|
|
dvander@790
|
531 |
/** |
|
dvander@1291
|
532 |
* Returns the number of seconds you should "wait" before displaying |
|
dvander@1291
|
533 |
* a publicly invocable menu. This number is the time remaining until |
|
dvander@1291
|
534 |
* (last_vote + sm_vote_delay). |
|
dvander@1291
|
535 |
* |
|
dvander@1291
|
536 |
* @return Number of seconds to wait, or 0 for none. |
|
dvander@1291
|
537 |
*/ |
|
dvander@1291
|
538 |
native CheckVoteDelay(); |
|
dvander@1291
|
539 |
|
|
dvander@1291
|
540 |
/** |
|
dvander@790
|
541 |
* Returns a style's global Handle. |
|
dvander@790
|
542 |
* |
|
dvander@790
|
543 |
* @param style Menu Style. |
|
dvander@790
|
544 |
* @return A Handle, or INVALID_HANDLE if not found or unusable. |
|
dvander@790
|
545 |
*/ |
|
dvander@790
|
546 |
native Handle:GetMenuStyleHandle(MenuStyle:style); |
|
dvander@790
|
547 |
|
|
dvander@790
|
548 |
/** |
|
dvander@790
|
549 |
* Creates a MenuPanel from a MenuStyle. Panels are used for drawing raw |
|
dvander@790
|
550 |
* menus without any extra helper functions. The Handle must be closed |
|
dvander@790
|
551 |
* with CloseHandle(). |
|
dvander@790
|
552 |
* |
|
dvander@790
|
553 |
* @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. |
|
dvander@790
|
554 |
* @return A new MenuPanel Handle. |
|
dvander@790
|
555 |
* @error Invalid Handle other than INVALID_HANDLE. |
|
dvander@790
|
556 |
*/ |
|
dvander@790
|
557 |
native Handle:CreatePanel(Handle:hStyle=INVALID_HANDLE); |
|
dvander@790
|
558 |
|
|
dvander@790
|
559 |
/** |
|
dvander@790
|
560 |
* Creates a Menu from a MenuStyle. The Handle must be closed with |
|
dvander@790
|
561 |
* CloseHandle(). |
|
dvander@790
|
562 |
* |
|
dvander@790
|
563 |
* @parma hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. |
|
dvander@790
|
564 |
* @param handler Function which will receive menu actions. |
|
dvander@790
|
565 |
* @param actions Optionally set which actions to receive. Select, |
|
dvander@790
|
566 |
* Cancel, and End will always be received regardless |
|
dvander@790
|
567 |
* of whether they are set or not. They are also |
|
dvander@790
|
568 |
* the only default actions. |
|
dvander@790
|
569 |
* @return A new menu Handle. |
|
dvander@790
|
570 |
* @error Invalid Handle other than INVALID_HANDLE. |
|
dvander@790
|
571 |
*/ |
|
dvander@790
|
572 |
native Handle:CreateMenuEx(Handle:hStyle=INVALID_HANDLE, MenuHandler:handler, MenuAction:actions=MENU_ACTIONS_DEFAULT); |
|
dvander@790
|
573 |
|
|
dvander@790
|
574 |
/** |
|
dvander@790
|
575 |
* Returns whether a client is viewing a menu. If the menu source |
|
dvander@790
|
576 |
* is MenuSource_Normal, a menu Handle will also be returned. |
|
dvander@790
|
577 |
* |
|
dvander@790
|
578 |
* @param client Client index. |
|
dvander@790
|
579 |
* @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. |
|
dvander@790
|
580 |
* @return A MenuSource value. |
|
dvander@790
|
581 |
* @error Invalid Handle other than INVALID_HANDLE. |
|
dvander@790
|
582 |
*/ |
|
dvander@790
|
583 |
native MenuSource:GetClientMenu(client, Handle:hStyle=INVALID_HANDLE); |
|
dvander@790
|
584 |
|
|
dvander@790
|
585 |
/** |
|
dvander@790
|
586 |
* Cancels a menu on a client. This will only affect non-external menus. |
|
dvander@790
|
587 |
* |
|
dvander@790
|
588 |
* @param hstyle MenuStyle Handle, or INVALID_HANDLE to use the default style. |
|
dvander@790
|
589 |
* @param client Client index. |
|
dvander@790
|
590 |
* @param autoIgnore If true, no menus can be re-drawn on the client during |
|
dvander@790
|
591 |
* the cancellation process. |
|
dvander@790
|
592 |
* @return True if a menu was cancelled, false otherwise. |
|
dvander@790
|
593 |
*/ |
|
dvander@790
|
594 |
native bool:CancelClientMenu(client, bool:autoIgnore=false, Handle:hStyle=INVALID_HANDLE); |
|
dvander@790
|
595 |
|
|
dvander@790
|
596 |
/** |
|
dvander@790
|
597 |
* Returns a style's maximum items per page. |
|
dvander@790
|
598 |
* |
|
dvander@790
|
599 |
* @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. |
|
dvander@790
|
600 |
* @return Maximum items per page. |
|
dvander@790
|
601 |
* @error Invalid Handle other than INVALID_HANDLE. |
|
dvander@790
|
602 |
*/ |
|
dvander@790
|
603 |
native GetMaxPageItems(Handle:hStyle=INVALID_HANDLE); |
|
dvander@790
|
604 |
|
|
dvander@790
|
605 |
/** |
|
dvander@790
|
606 |
* Returns a MenuPanel's parent style. |
|
dvander@790
|
607 |
* |
|
dvander@790
|
608 |
* @param panel A MenuPanel Handle. |
|
dvander@790
|
609 |
* @return The MenuStyle Handle that created the panel. |
|
dvander@790
|
610 |
* @error Invalid Handle. |
|
dvander@790
|
611 |
*/ |
|
dvander@790
|
612 |
native Handle:GetPanelStyle(Handle:panel); |
|
dvander@790
|
613 |
|
|
dvander@790
|
614 |
/** |
|
dvander@790
|
615 |
* Sets the panel's title. |
|
dvander@790
|
616 |
* |
|
dvander@790
|
617 |
* @param panel A MenuPanel Handle. |
|
dvander@790
|
618 |
* @param title Text to set as the title. |
|
dvander@790
|
619 |
* @param onlyIfEmpty If true, the title will only be set if no title is set. |
|
dvander@790
|
620 |
* @noreturn |
|
dvander@790
|
621 |
* @error Invalid Handle. |
|
dvander@790
|
622 |
*/ |
|
dvander@790
|
623 |
native Handle:SetPanelTitle(Handle:panel, const String:text[], bool:onlyIfEmpty=false); |
|
dvander@790
|
624 |
|
|
dvander@790
|
625 |
/** |
|
dvander@790
|
626 |
* Draws an item on a panel. If the item takes up a slot, the position |
|
dvander@790
|
627 |
* is returned. |
|
dvander@790
|
628 |
* |
|
dvander@790
|
629 |
* @param panel A MenuPanel Handle. |
|
dvander@790
|
630 |
* @param text Display text to use. If not a raw line, |
|
dvander@790
|
631 |
* the style may automatically add color markup. |
|
dvander@790
|
632 |
* No numbering or newlines are needed. |
|
dvander@790
|
633 |
* @param style ITEMDRAW style flags. |
|
dvander@790
|
634 |
* @return A slot position, or 0 if item was a rawline or could not be drawn. |
|
dvander@790
|
635 |
* @error Invalid Handle. |
|
dvander@790
|
636 |
*/ |
|
dvander@790
|
637 |
native DrawPanelItem(Handle:panel, const String:text[], style=ITEMDRAW_DEFAULT); |
|
dvander@790
|
638 |
|
|
dvander@790
|
639 |
/** |
|
dvander@790
|
640 |
* Draws a raw line of text on a panel, without any markup other than a newline. |
|
dvander@790
|
641 |
* |
|
dvander@1163
|
642 |
* @param panel A MenuPanel Handle, or INVALID_HANDLE if inside a |
|
dvander@1163
|
643 |
* MenuAction_DisplayItem callback. |
|
dvander@790
|
644 |
* @param text Display text to use. |
|
dvander@790
|
645 |
* @return True on success, false if raw lines are not supported. |
|
dvander@790
|
646 |
* @error Invalid Handle. |
|
dvander@790
|
647 |
*/ |
|
dvander@790
|
648 |
native DrawPanelText(Handle:panel, const String:text[]); |
|
dvander@790
|
649 |
|
|
dvander@790
|
650 |
/** |
|
dvander@790
|
651 |
* Returns whether or not the given drawing flags are supported by |
|
dvander@790
|
652 |
* the menu style. |
|
dvander@790
|
653 |
* |
|
dvander@790
|
654 |
* @param panel A MenuPanel Handle. |
|
dvander@790
|
655 |
* @param style ITEMDRAW style flags. |
|
dvander@790
|
656 |
* @return True if item is drawable, false otherwise. |
|
dvander@790
|
657 |
* @error Invalid Handle. |
|
dvander@790
|
658 |
*/ |
|
dvander@790
|
659 |
native CanPanelDrawFlags(Handle:panel, style); |
|
dvander@790
|
660 |
|
|
dvander@790
|
661 |
/** |
|
dvander@819
|
662 |
* Sets the selectable key map of a panel. This is not supported by |
|
dvander@819
|
663 |
* all styles (only by Radio, as of this writing). |
|
dvander@819
|
664 |
* |
|
dvander@819
|
665 |
* @param keys An integer where each bit N allows key |
|
dvander@819
|
666 |
* N+1 to be selected. If no keys are selectable, |
|
dvander@819
|
667 |
* then key 0 (bit 9) is automatically set. |
|
dvander@819
|
668 |
* @return True if supported, false otherwise. |
|
dvander@819
|
669 |
*/ |
|
dvander@819
|
670 |
native bool:SetPanelKeys(Handle:panel, keys); |
|
dvander@819
|
671 |
|
|
dvander@819
|
672 |
/** |
|
dvander@790
|
673 |
* Sends a panel to a client. Unlike full menus, the handler |
|
dvander@790
|
674 |
* function will only receive the following actions, both of |
|
dvander@790
|
675 |
* which will have INVALID_HANDLE for a menu, and the client |
|
dvander@790
|
676 |
* as param1. |
|
dvander@790
|
677 |
* |
|
dvander@790
|
678 |
* MenuAction_Select (param2 will be the key pressed) |
|
dvander@790
|
679 |
* MenuAction_Cancel (param2 will be the reason) |
|
dvander@790
|
680 |
* |
|
dvander@790
|
681 |
* Also, if the menu fails to display, no callbacks will be called. |
|
dvander@790
|
682 |
* |
|
dvander@790
|
683 |
* @param panel A MenuPanel Handle. |
|
dvander@790
|
684 |
* @param client A client to draw to. |
|
dvander@790
|
685 |
* @param handler The MenuHandler function to catch actions with. |
|
dvander@790
|
686 |
* @param time Time to hold the menu for. |
|
dvander@790
|
687 |
* @return True on success, false on failure. |
|
dvander@790
|
688 |
* @error Invalid Handle. |
|
dvander@790
|
689 |
*/ |
|
dvander@790
|
690 |
native bool:SendPanelToClient(Handle:panel, client, MenuHandler:handler, time); |
|
dvander@840
|
691 |
|
|
dvander@840
|
692 |
/** |
|
dvander@1361
|
693 |
* @brief Returns the amount of text the menu can still hold. If this is |
|
dvander@1361
|
694 |
* limit is reached or overflowed, the text is silently truncated. |
|
dvander@1361
|
695 |
* |
|
dvander@1361
|
696 |
* Radio menus: Currently 511 characters (512 bytes). |
|
dvander@1361
|
697 |
* Valve menus: Currently -1 (no meaning). |
|
dvander@1361
|
698 |
* |
|
dvander@1361
|
699 |
* @param panel A MenuPanel Handle. |
|
dvander@1361
|
700 |
* @return Number of characters that the menu can still hold, |
|
dvander@1361
|
701 |
* or -1 if there is no known limit. |
|
dvander@1361
|
702 |
* @error Invalid Handle. |
|
dvander@1361
|
703 |
*/ |
|
dvander@1361
|
704 |
native GetPanelTextRemaining(Handle:panel); |
|
dvander@1361
|
705 |
|
|
dvander@1361
|
706 |
/** |
|
dvander@840
|
707 |
* @brief Returns the current key position. |
|
dvander@840
|
708 |
* |
|
dvander@840
|
709 |
* @param panel A MenuPanel Handle. |
|
dvander@840
|
710 |
* @return Current key position starting at 1. |
|
dvander@840
|
711 |
* @error Invalid Handle. |
|
dvander@840
|
712 |
*/ |
|
dvander@840
|
713 |
native GetPanelCurrentKey(Handle:panel); |
|
dvander@840
|
714 |
|
|
dvander@840
|
715 |
/** |
|
dvander@840
|
716 |
* @brief Sets the next key position. This cannot be used |
|
dvander@840
|
717 |
* to traverse backwards. |
|
dvander@840
|
718 |
* |
|
dvander@840
|
719 |
* @param panel A MenuPanel Handle. |
|
dvander@840
|
720 |
* @param key Key that is greater or equal to |
|
dvander@840
|
721 |
* GetPanelCurrentKey(). |
|
dvander@840
|
722 |
* @return True on success, false otherwise. |
|
dvander@840
|
723 |
* @error Invalid Handle. |
|
dvander@840
|
724 |
*/ |
|
dvander@840
|
725 |
native bool:SetPanelCurrentKey(Handle:panel, key); |
|
dvander@960
|
726 |
|
|
dvander@960
|
727 |
/** |
|
dvander@1163
|
728 |
* @brief Redraws menu text from inside a MenuAction_DisplayItem callback. |
|
dvander@1163
|
729 |
* |
|
dvander@1163
|
730 |
* @param text Menu text to draw. |
|
dvander@1163
|
731 |
* @return Item position; must be returned via the callback. |
|
dvander@1163
|
732 |
*/ |
|
dvander@1163
|
733 |
native RedrawMenuItem(const String:text[]); |
|
dvander@1163
|
734 |
|
|
dvander@1163
|
735 |
/** |
|
dvander@960
|
736 |
* Retrieves voting information from MenuAction_VoteEnd. |
|
dvander@960
|
737 |
* |
|
dvander@960
|
738 |
* @param param2 Second parameter of MenuAction_VoteEnd. |
|
dvander@960
|
739 |
* @param winningVotes Number of votes received by the winning option. |
|
dvander@960
|
740 |
* @param totalVotes Number of total votes received. |
|
dvander@960
|
741 |
* @noreturn |
|
dvander@960
|
742 |
*/ |
|
dvander@960
|
743 |
stock GetMenuVoteInfo(param2, &winningVotes, &totalVotes) |
|
dvander@960
|
744 |
{ |
|
dvander@960
|
745 |
winningVotes = param2 & 0xFFFF; |
|
dvander@960
|
746 |
totalVotes = param2 >> 16; |
|
dvander@960
|
747 |
} |
|
dvander@1594
|
748 |
|
|
dvander@1594
|
749 |
/** |
|
dvander@1594
|
750 |
* Quick stock to determine whether voting is allowed. This doesn't let you |
|
dvander@1594
|
751 |
* fine-tune a reason for not voting, so it's not recommended for lazily |
|
dvander@1594
|
752 |
* telling clients that voting isn't allowed. |
|
dvander@1594
|
753 |
* |
|
dvander@1594
|
754 |
* @return True if voting is allowed, false if voting is in progress |
|
dvander@1594
|
755 |
* or the cooldown is active. |
|
dvander@1594
|
756 |
*/ |
|
dvander@1594
|
757 |
stock bool:IsNewVoteAllowed() |
|
dvander@1594
|
758 |
{ |
|
dvander@1594
|
759 |
if (IsVoteInProgress() || CheckVoteDelay() != 0) |
|
dvander@1594
|
760 |
{ |
|
dvander@1594
|
761 |
return false; |
|
dvander@1594
|
762 |
} |
|
dvander@1594
|
763 |
|
|
dvander@1594
|
764 |
return true; |
|
dvander@1594
|
765 |
} |