FTEQW
Documentation of the FTE engine source tree.
menu.h
Go to the documentation of this file.
1/*
2Copyright (C) 1996-1997 Id Software, Inc.
3
4This program is free software; you can redistribute it and/or
5modify it under the terms of the GNU General Public License
6as published by the Free Software Foundation; either version 2
7of the License, or (at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13See the GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19*/
20
21//There are still menu states, which say which menu gets absolute control.
22//Some of the destinations are healthier than others. :)
23
24//m_none - menu is disabled
25//m_complex - hirachy of item types
26//m_help - old q1 style help menu (fixme: make m_complex)
27//m_plugin - A QVM based or DLL based plugin.
28
29
30//the m_complex menu state is the most advanced, and drives the bulk of FTE's menus in an event driven way.
31//It consists of menus and items. Fairly basic really.
32//Each item type has a structure (or shares a structure).
33//Each of these structures contain a menucommon_t.
34//The backend of this system lives in m_items.c.
35//If you're creating your own quake menu, there should be little need to go in there.
36//These are the item types:
37
38//mt_childwindow -
39//mt_button - Executes a console command or callback on enter. Uses conchars.
40//mt_buttonbigfont - Used by hexen2's menus. Uses gfx/menu/bigfont.lmp as it's characters.
41//mt_box - A 2d box. The same one as the quit dialog from q1, but resized.
42//mt_colouredbox - Not used.
43//mt_line - Not used.
44//mt_edit - A one row edit box, either attached to a cvar, or an apply button.
45//mt_text - unselectable. Otherwise like mt_button
46//mt_slider - a horizontal slider, like quake's gamma option, attached to a cvar.
47//mt_combo - multiple specific options. Created with specifically structured info.
48//mt_bind - a key binding option.
49//mt_checkbox - a yes/no toggle, attached to a cvar.
50//mt_picture - Just draws a lmp from it's x/y.
51//mt_menudot - The 24*24 rotating quake menudot. Should be specified as the cursoritem, and should be placed to match the selecteditem's y position.
52//mt_custom - Just an option with callbacks. This is the basis of the top/bottom color seletion, and could be used for all sorts of things.
53
54
55//Sample menu creation, entirly within / * and * /
56//Note that most of FTE's menus are more complicated, as FTE runs on Q1/Q2/H2 data, and it's choice of menu images reflects this.
57//Most of the normal menus also have more items too, of course.
58
59//FTE's menu console commands are registered from M_Init_Internal instead of M_Init as implied here. Why?
60//FTE's menu.dat support unregisters the menu console commands so the menu.dat can use those commands instead.
61//This results in more user friendliness for mods but makes the code a little more confusing.
62//If you make the menu name unique enough, then there's no need to follow the standard menu code.
63/*
64//M_SomeMenuConsoleCommand_f
65//Spawns a sample menu.
66void M_SomeMenuConsoleCommand_f (void)
67{
68 menu_t *m = M_CreateMenu(0);
69 int y = 32;
70
71 //add the title
72 MC_AddCenterPicture(m, 4, 24, "gfx/p_option.lmp");
73
74 //add the blinking > thingie
75 //(note NULL instead of a valid string, this should really be a variant of mt_menudot instead)
76 menu->cursoritem = (menuoption_t*)MC_AddWhiteText(menu, 200, y, NULL, false);
77
78 //Set up so the first item is selected. :)
79 m->selecteditem = (menuoption_t*)
80
81 //Add the items.
82 MC_AddConsoleCommand(menu, 16, y, " Customize controls", "menu_keys\n"); y+=8;
83 MC_AddSlider(menu, 16, y, " Mouse Speed", &sensitivity, 1, 10); y+=8;
84 MC_AddCheckBox(menu, 16, y, " Lookstrafe", &lookstrafe,0); y+=8;
85}
86
87//eg: M_Init
88void M_SomeInitialisationFunctionCalledAtStartup(void)
89{
90 Cmd_AddCommand("menu_somemenu", M_SomeMenuConsoleCommand_f);
91}
92*/
93
94void M_DrawTextBox (int x, int y, int width, int lines);
95
96//menus can have all sorts of implementation.
97//however, to avoid a cacophony of ugly blends, these are always mutually exclusive - only one type of menu will be at the top and only that one will be drawn.
98//if you want windows etc you can implement that inside a single one of these.
99//each menu subsystem can implement this and then provide its own widgets.
100typedef struct menu_s {
101 struct menu_s *prev;
102
103 void *ctx; //for finding a specific menu
104 void (*videoreset) (struct menu_s *); //called after a video mode switch / shader reload.
105 void (*release) (struct menu_s *, qboolean forced); //forced says 'dont load any other menus'.
106 qboolean (*keyevent)(struct menu_s *, qboolean isdown, unsigned int devid, int key, int unicode); //true if key was handled
107 qboolean (*mousemove)(struct menu_s *, qboolean abs, unsigned int devid, float x, float y);
108 qboolean (*joyaxis) (struct menu_s *, unsigned int devid, int axis, float val);
109 void (*drawmenu) (struct menu_s *);
110 struct key_cursor_s *cursor; //NULL for relative motion
111 qboolean lowpriority; //appears underneath other menus.
112 qboolean isopaque; //guarentees an opaque background
113 qboolean persist; //try really hard to not kill this.
116extern menu_t *topmenu; //the currently visible menu.
117extern menu_t *promptmenu; //the currently visible prompt (separate from menus, so they always appear over the top of consoles too, they also always show the menu underneath)
118void Menu_KeyEvent(qboolean down, int qdeviceid, int key, int unicode);
119int Menu_WantOSK(void);
120void Menu_Draw(void);
121void Prompts_Draw(void);
122void Menu_PopAll(void); //attempts to pop all menus (this is for map starts, some might linger)
123void Menu_Unlink(menu_t *menu, qboolean forced);
124void Menu_Push(menu_t *menu, qboolean prompt);
127
128typedef enum
129{
134void Menu_Prompt (void (*callback)(void *, promptbutton_t), void *ctx, const char *messages, const char *optionyes, const char *optionno, const char *optioncancel, qboolean highpri);
135
136#ifndef NOBUILTINMENUS
137
138//
139// menus
140//
141void M_Init (void);
142void M_Reinit(void);
143void M_Shutdown(qboolean total);
144void M_Menu_Mods_f (void); //used at startup if the current gamedirs look dodgy.
145void M_Menu_Installer (void); //given an embedded manifest, this displays an install menu for said game.
146mpic_t *M_CachePic (char *path);
147void M_Menu_Quit_f (void);
148void menufixme(void); //REMOVE REMOVE REMOVE
149typedef struct emenu_s emenu_t;
150
151
152typedef enum {
173
174typedef struct { //must be first of each structure type.
176 int posx;
177 int posy;
178 int width; //total width
179 int height; //total height
180 int extracollide; // dirty hack to stretch collide box left (the real fix is to have separate collide/render rects)
181 //unsigned int grav_type;
182 //int grav_x; //
183 int grav_y; //
184 //int grav_size[2];
185 const char *tooltip;
191
192
193typedef struct {
195 const char *text;
196 const char *command;
198 qboolean (*key) (union menuoption_s *option, struct emenu_s *, int key);
200
201#define MAX_EDIT_LENGTH 256
202typedef struct {
205 const char *caption;
207 char text[MAX_EDIT_LENGTH];
211} menuedit_t;
212typedef struct {
214 float min;
215 float max;
216 float current;
219 float vx;
222 const char *text;
224
226typedef struct menucheck_s {
228 const char *text;
231 int bits;
232 float value;
233 qboolean (*func) (struct menucheck_s *option, struct emenu_s *menu, chk_set_t set);
235
236typedef struct {
238 const char *text;
241} menutext_t;
242
243typedef struct menucustom_s {
245 void *dptr;
246 void *dptr2;
247 int dint;
248 void (*draw) (int x, int y, struct menucustom_s *, struct emenu_s *);
249 qboolean (*key) (struct menucustom_s *, struct emenu_s *, int key, unsigned int unicode);
251
252typedef struct {
256
257typedef struct {
259 int width;
261} menubox_t;
262
263typedef struct {
265
267 char const*caption;
268 char const*const*options;
269 char const*const*values;
274
275typedef struct {
278 char *caption;
279 char *command;
280} menubind_t;
281
282typedef struct {
285 float frac;
288
289typedef union menuoption_s {
303
304typedef struct menutooltip_s {
308
309typedef struct menuresel_s //THIS STRUCT MUST BE STATICALLY ALLOCATED.
310{
311 int x, y;
313
314struct emenu_s {
316
317 int xpos;
318 int ypos;
319 int width;
321 qboolean dontexpand; //false=recenter xpos
323 menuresel_t *reselection; //stores some info to restore selection properly.
324
327
328 void *data; //typecast
329
330 void (*reset) (struct emenu_s *); //called after a video mode switch / shader reload.
331 void (*remove) (struct emenu_s *);
332 qboolean (*key) (struct emenu_s *, int key, unsigned int unicode); //true if key was handled
333 void (*predraw) (struct emenu_s *);
334 void (*postdraw) (struct emenu_s *);
336
339
342
345};
346
347menutext_t *MC_AddBufferedText(emenu_t *menu, int lhs, int rhs, int y, const char *text, int rightalign, qboolean red);
348menutext_t *MC_AddRedText(emenu_t *menu, int lhs, int rhs, int y, const char *text, int rightalign);
349menutext_t *MC_AddWhiteText(emenu_t *menu, int lhs, int rhs, int y, const char *text, int rightalign);
350menubind_t *MC_AddBind(emenu_t *menu, int cx, int bx, int y, const char *caption, char *command, const char *tooltip);
351menubox_t *MC_AddBox(emenu_t *menu, int x, int y, int width, int height);
352menupicture_t *MC_AddPicture(emenu_t *menu, int x, int y, int width, int height, const char *picname);
353menupicture_t *MC_AddSelectablePicture(emenu_t *menu, int x, int y, int height, const char *picname);
354menupicture_t *MC_AddCenterPicture(emenu_t *menu, int y, int height, const char *picname);
357menuslider_t *MC_AddSlider(emenu_t *menu, int tx, int sx, int y, const char *text, cvar_t *var, float min, float max, float delta);
358menucheck_t *MC_AddCheckBox(emenu_t *menu, int tx, int cx, int y, const char *text, cvar_t *var, int cvarbitmask);
359menucheck_t *MC_AddCheckBoxFunc(emenu_t *menu, int tx, int cx, int y, const char *text, qboolean (*func) (menucheck_t *option, emenu_t *menu, chk_set_t set), int bits);
360menubutton_t *MC_AddConsoleCommand(emenu_t *menu, int lhs, int rhs, int y, const char *text, const char *command);
361menubutton_t *MC_AddConsoleCommandQBigFont(emenu_t *menu, int x, int y, const char *text, const char *command);
362mpic_t *QBigFontWorks(void);
363menubutton_t *MC_AddConsoleCommandHexen2BigFont(emenu_t *menu, int x, int y, const char *text, const char *command);
364menubutton_t *VARGS MC_AddConsoleCommandf(emenu_t *menu, int lhs, int rhs, int y, int rightalign, const char *text, char *command, ...);
365menubutton_t *MC_AddCommand(emenu_t *menu, int lhs, int rhs, int y, const char *text, qboolean (*command) (union menuoption_s *,struct emenu_s *,int));
366menucombo_t *MC_AddCombo(emenu_t *menu, int tx, int cx, int y, const char *caption, const char **ops, int initialvalue);
367menucombo_t *MC_AddCvarCombo(emenu_t *menu, int tx, int cx, int y, const char *caption, cvar_t *cvar, const char **ops, const char **values);
368menuedit_t *MC_AddEdit(emenu_t *menu, int cx, int ex, int y, const char *text, const char *def);
369menuedit_t *MC_AddEditCvar(emenu_t *menu, int cx, int ex, int y, const char *text, const char *name, qboolean slim);
370menucustom_t *MC_AddCustom(emenu_t *menu, int x, int y, void *dptr, int dint, const char *tooltip);
371menuframe_t *MC_AddFrameStart(emenu_t *menu, int y); //call before items are added
372menuframe_t *MC_AddFrameEnd(emenu_t *menu, int y); //and call AFTER that stuff with the same y.
373
374typedef struct menubulk_s {
377 const char *text;
378 const char *tooltip;
379 char *consolecmd; // console command
380 cvar_t *cvar; // check box, slider
381 int flags; // check box
382 qboolean (*func) (struct menucheck_s *option, struct emenu_s *menu, chk_set_t set); // check box
383 float min; // slider
384 float max; // slider
385 float delta; // slider
387 qboolean (*command) (union menuoption_s *, struct emenu_s *, int); // command
388 char *cvarname; // edit cvar
389 const char **options; // combo
390 const char **values; // cvar combo
391 int selectedoption; // other combo
392 union menuoption_s **ret; // other combo
393 int spacing; // spacing
395
396#define MB_CONSOLECMD(text, cmd, tip) {mt_button, 0, localtext(text), localtext(tip), cmd}
397#define MB_CONSOLECMDRETURN(text, cmd, tip, ret) {mt_button, 0, localtext(text), localtext(tip), cmd, NULL, 0, NULL, 0, 0, 0, false, NULL, NULL, NULL, NULL, 0, (union menuoption_s **)&ret}
398#define MB_CHECKBOXCVAR(text, cvar, cvarflag) {mt_checkbox, 0, localtext(text), NULL, NULL, &cvar, cvarflag}
399#define MB_CHECKBOXCVARTIP(text, cvar, cvarflag, tip) {mt_checkbox, 0, localtext(text), localtext(tip), NULL, &cvar, cvarflag}
400#define MB_CHECKBOXCVARRETURN(text, cvar, cvarflag, ret) {mt_checkbox, 0, localtext(text), NULL, NULL, &cvar, cvarflag, NULL, 0, 0, 0, false, NULL, NULL, NULL, NULL, 0, (union menuoption_s **)&ret}
401#define MB_CHECKBOXFUNC(text, func, flags, tip) {mt_checkbox, 0, localtext(text), localtext(tip), NULL, NULL, flags, func}
402#define MB_SLIDER(text, cvar, min, max, delta, tip) {mt_slider, 0, localtext(text), localtext(tip), NULL, &cvar, 0, NULL, min, max, delta}
403#define MB_TEXT(text, align) {mt_text, 0, localtext(text), NULL, NULL, NULL, 0, NULL, 0, 0, 0, align}
404#define MB_REDTEXT(text, align) {mt_text, 1, localtext(text), NULL, NULL, NULL, 0, NULL, 0, 0, 0, align}
405#define MB_CMD(text, cmdfunc, tip) {mt_button, 1, localtext(text), localtext(tip), NULL, NULL, 0, NULL, 0, 0, 0, false, cmdfunc}
406#define MB_EDITCVARTIP(text, cvarname, tip) {mt_edit, 0, localtext(text), localtext(tip), NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, cvarname}
407#define MB_EDITCVAR(text, cvarname) {mt_edit, 0, localtext(text), NULL, NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, cvarname}
408#define MB_EDITCVARSLIM(text, cvarname, tip) {mt_edit, 1, localtext(text), localtext(tip), NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, cvarname}
409#define MB_EDITCVARSLIMRETURN(text, cvarname, ret) {mt_edit, 1, localtext(text), NULL, NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, cvarname, NULL, NULL, 0, (union menuoption_s **)&ret}
410#define MB_COMBOCVAR(text, cvar, options, values, tip) {mt_combo, 0, localtext(text), localtext(tip), NULL, &cvar, 0, NULL, 0, 0, 0, false, NULL, NULL, options, values}
411#define MB_COMBORETURN(text, options, selected, ret, tip) {mt_combo, 1, localtext(text), localtext(tip), NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, NULL, options, NULL, selected, (union menuoption_s **)&ret}
412#define MB_COMBOCVARRETURN(text, cvar, options, values, ret, tip) {mt_combo, 0, localtext(text), localtext(tip), NULL, &cvar, 0, NULL, 0, 0, 0, false, NULL, NULL, options, values, 0, (union menuoption_s **)&ret}
413#define MB_SPACING(space) {mt_text, 2, NULL, NULL, NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, NULL, NULL, NULL, 0, NULL, space}
414#define MB_END() {mt_text, -1}
415
416int MC_AddBulk(emenu_t *menu, menuresel_t *resel, menubulk_t *bulk, int xstart, int xtextend, int y);
417
418
419
420emenu_t *M_Options_Title(int *y, int infosize); /*Create a menu with the default options titlebar*/
421emenu_t *M_CreateMenu (int extrasize);
422void M_RemoveMenu (emenu_t *menu);
423void M_RemoveAllMenus (qboolean leaveprompts);
424void M_ReloadMenus(void);
425menubutton_t *M_FindButton(emenu_t *menu, const char *command);
426
427void M_Complex_Key(emenu_t *currentmenu, int key, int unicode);
428void M_Script_Init(void);
429void M_Serverlist_Init(void);
430
432
433const char *M_ChooseAutoSave(void);
434void M_Menu_Main_f (void);
435 void M_Menu_SinglePlayer_f (void);
436 void M_Menu_Load_f (void);
437 void M_Menu_Save_f (void);
438 void M_Menu_MultiPlayer_f (void);
439 void M_Menu_Setup_f (void);
440 void M_Menu_Net_f (void);
441 void M_Menu_Options_f (void);
442 void M_Menu_Keys_f (void);
443 void M_Menu_Video_f (void);
444 void M_Menu_Help_f (void);
445 void M_Menu_Quit_f (void);
446 void M_Menu_Preset_f (void);
448void M_Menu_GameOptions_f (void);
449void M_Menu_Search_f (void);
451
452/*
453void M_Main_Draw (void);
454 void M_SinglePlayer_Draw (void);
455 void M_Load_Draw (void);
456 void M_Save_Draw (void);
457 void M_MultiPlayer_Draw (void);
458 void M_Setup_Draw (void);
459 void M_Net_Draw (void);
460 void M_Options_Draw (void);
461 void M_Video_Draw (void);
462 void M_Help_Draw (void);
463 void M_Quit_Draw (void);
464void M_LanConfig_Draw (void);
465void M_GameOptions_Draw (void);
466void M_Search_Draw (void);
467void M_ServerList_Draw (void);
468
469void M_Main_Key (int key);
470 void M_SinglePlayer_Key (int key);
471 void M_Load_Key (int key);
472 void M_Save_Key (int key);
473 void M_MultiPlayer_Key (int key);
474 void M_Setup_Key (int key);
475 void M_Net_Key (int key);
476 void M_Options_Key (int key);
477 void M_Video_Key (int key);
478 void M_Help_Key (int key);
479 void M_Quit_Key (int key);
480void M_LanConfig_Key (int key);
481void M_GameOptions_Key (int key);
482void M_Search_Key (int key);
483void M_ServerList_Key (int key);
484*/
485
486//drawing funcs
487void M_BuildTranslationTable(unsigned int pc, unsigned int top, unsigned int bottom, unsigned int *translationTable);
488void M_DrawCharacter (int cx, int line, unsigned int num);
489void M_Print (int cx, int cy, qbyte *str);
490void M_PrintWhite (int cx, int cy, qbyte *str);
491void M_DrawScalePic (int x, int y, int w, int h, mpic_t *pic);
492
493
494void M_UnbindCommand (const char *command);
495
496#else
497//no builtin menu code.
498//stubs
499//#define M_Shutdown(t) MP_Shutdown()
500
501void M_Init (void);
502void M_Reinit(void);
503void M_Shutdown(qboolean total);
504#endif
505int M_FindKeysForCommand (int bindmap, int pnum, const char *command, int *keylist, int *keymods, int keycount);
506int QDECL M_FindKeysForBind (int bindmap, const char *command, int *keylist, int *keymods, int keycount);
507void M_ToggleMenu_f (void);
508
509#ifdef MENU_DAT
511qboolean MP_Init (void);
512void MP_Shutdown (void);
514void MP_RendererRestarted(void);
515void MP_Draw(void);
517void MP_RegisterCvarsAndCmds(void);
518int MP_BuiltinValid(const char *name, int num);
519qboolean MP_ConsoleCommand(const char *cmdtext);
521#else
522#define MP_UsingGamecodeLoadingScreen() false
523#endif
524
525#ifdef MENU_NATIVECODE
526#ifdef HAVE_CLIENT
527#include "api_menu.h"
528extern menu_export_t *mn_entry;
529void MN_Shutdown(void);
530qboolean MN_Init(void);
531#endif
532#endif
533
534#define MGT_BAD ~0
535#define MGT_QUAKE1 0
536#define MGT_HEXEN2 1
537#define MGT_QUAKE2 2
538int M_GameType(void);
539
540
541
542
543
544//plugin functions
545#ifdef PLUGINS
546qboolean Plug_CenterPrintMessage(char *buffer, int clientnum);
547qboolean Plug_ChatMessage(char *buffer, int talkernum, int tpflags);
548void Plug_Command_f(void);
550qboolean Plug_ConsoleLink(char *text, char *info, const char *consolename);
551qboolean Plug_ConsoleLinkMouseOver(float x, float y, char *text, char *info);
553void Plug_Initialise(qboolean fromgamedir);
554void Plug_Shutdown(qboolean preliminary);
555qboolean Plug_Menu_Event(int eventtype, int keyparam, int unicodeparam);
556void Plug_ResChanged(qboolean restarted);
557void Plug_SBar(playerview_t *pv);
558qboolean Plug_ServerMessage(char *buffer, int messagelevel);
559void Plug_Tick(void);
562
563#ifdef ANDROID
564#define PLUGINPREFIX "libplug_" //android is kinda annoying and only extracts specific files.
565#else
566#define PLUGINPREFIX "fteplug_" //this string defines what consitutes a plugin, as opposed to some other dll
567#endif
568#endif
qboolean
Definition: api_menu.h:34
unsigned int width
Definition: bymorphed.h:4
unsigned int height
Definition: bymorphed.h:5
enum @13::coninfomode_e mode
Definition: com_phys_ode.c:695
void(QDECL *vgui_frame)(void)
void dNearCallback * callback
Definition: com_phys_ode.c:655
int num
Definition: com_phys_ode.c:314
unsigned int conchar_t
Definition: common.h:476
unsigned char qbyte
Definition: common.h:127
char * text
Definition: decomp.c:375
GLdouble GLdouble bottom
Definition: gl_vidcommon.c:166
GLdouble GLdouble GLdouble top
Definition: gl_vidcommon.c:166
static EGLSurface EGLSurface EGLContext ctx
Definition: gl_videgl.c:47
double max
Definition: gl_vidlinuxglx.c:1364
struct @319::xidevinfo::@353 axis[2]
double min
Definition: gl_vidlinuxglx.c:1364
qboolean abs
Definition: gl_vidlinuxglx.c:1363
static CONST PIXELFORMATDESCRIPTOR *static int
Definition: gl_vidnt.c:222
GLfloat GLfloat y
Definition: glquake.h:158
GLuint index
Definition: glquake.h:155
GLuint GLcharARB * name
Definition: glquake.h:155
GLint size
Definition: glquake.h:157
GLfloat x
Definition: glquake.h:158
GLfloat GLfloat GLfloat GLfloat w
Definition: glquake.h:158
unsigned char bits
Definition: image_astc.h:123
void Menu_PopAll(void)
Definition: menu.c:132
menubutton_t * MC_AddConsoleCommandQBigFont(emenu_t *menu, int x, int y, const char *text, const char *command)
Definition: m_items.c:1585
void MP_CvarChanged(cvar_t *var)
Definition: pr_menu.c:3034
void Menu_KeyEvent(qboolean down, int qdeviceid, int key, int unicode)
Definition: menu.c:28
void Prompts_Draw(void)
Definition: menu.c:176
void Menu_Push(menu_t *menu, qboolean prompt)
Definition: menu.c:106
void M_Menu_Search_f(void)
void M_Complex_Key(emenu_t *currentmenu, int key, int unicode)
Definition: m_items.c:2093
void M_Menu_SinglePlayer_f(void)
Definition: m_single.c:319
void M_Menu_Load_f(void)
Definition: m_single.c:270
void M_DrawScalePic(int x, int y, int w, int h, mpic_t *pic)
Definition: menu.c:183
void M_Menu_Help_f(void)
Definition: menu.c:1137
void Plug_Command_f(void)
Definition: plugin.c:611
menupicture_t * MC_AddPicture(emenu_t *menu, int x, int y, int width, int height, const char *picname)
Definition: m_items.c:1063
menupicture_t * MC_AddCursor(emenu_t *menu, menuresel_t *resel, int x, int y)
Definition: m_items.c:1150
menutext_t * MC_AddRedText(emenu_t *menu, int lhs, int rhs, int y, const char *text, int rightalign)
Definition: m_items.c:1000
menutext_t * MC_AddBufferedText(emenu_t *menu, int lhs, int rhs, int y, const char *text, int rightalign, qboolean red)
Definition: m_items.c:980
menucustom_t * MC_AddCustom(emenu_t *menu, int x, int y, void *dptr, int dint, const char *tooltip)
Definition: m_items.c:1287
void M_Menu_Main_f(void)
Definition: m_items.c:2417
struct menutooltip_s menutooltip_t
menucheck_t * MC_AddCheckBox(emenu_t *menu, int tx, int cx, int y, const char *text, cvar_t *var, int cvarbitmask)
Definition: m_items.c:1303
int Plug_ConnectionlessClientPacket(char *buffer, int size)
Definition: plugin.c:1391
void M_Menu_Video_f(void)
Definition: m_options.c:2969
menuedit_t * MC_AddEditCvar(emenu_t *menu, int cx, int ex, int y, const char *text, const char *name, qboolean slim)
Definition: m_items.c:1243
void M_PrintWhite(int cx, int cy, qbyte *str)
Definition: menu.c:703
void MP_Shutdown(void)
Definition: pr_menu.c:2947
void M_BuildTranslationTable(unsigned int pc, unsigned int top, unsigned int bottom, unsigned int *translationTable)
Definition: menu.c:708
void Plug_Shutdown(qboolean preliminary)
Definition: plugin.c:1820
mpic_t * M_CachePic(char *path)
void Plug_ResChanged(qboolean restarted)
Definition: plugin.c:1308
void MP_RendererRestarted(void)
Definition: pr_menu.c:3373
void M_Menu_Quit_f(void)
Definition: menu.c:1268
void M_Menu_Preset_f(void)
Definition: m_options.c:1373
menutype_t
Definition: menu.h:152
@ mt_bind
Definition: menu.h:165
@ mt_custom
Definition: menu.h:171
@ mt_line
Definition: menu.h:160
@ mt_qbuttonbigfont
Definition: menu.h:156
@ mt_text
Definition: menu.h:162
@ mt_framestart
Definition: menu.h:153
@ mt_edit
Definition: menu.h:161
@ mt_picturesel
Definition: menu.h:168
@ mt_slider
Definition: menu.h:163
@ mt_menudot
Definition: menu.h:169
@ mt_picture
Definition: menu.h:167
@ mt_combo
Definition: menu.h:164
@ mt_checkbox
Definition: menu.h:166
@ mt_button
Definition: menu.h:155
@ mt_box
Definition: menu.h:158
@ mt_menucursor
Definition: menu.h:170
@ mt_hexen2buttonbigfont
Definition: menu.h:157
@ mt_colouredbox
Definition: menu.h:159
@ mt_frameend
Definition: menu.h:154
void M_Menu_Net_f(void)
void M_Menu_LanConfig_f(void)
void Plug_Initialise(qboolean fromgamedir)
Definition: plugin.c:1236
menubutton_t * MC_AddConsoleCommand(emenu_t *menu, int lhs, int rhs, int y, const char *text, const char *command)
Definition: m_items.c:1565
menucheck_t * MC_AddCheckBoxFunc(emenu_t *menu, int tx, int cx, int y, const char *text, qboolean(*func)(menucheck_t *option, emenu_t *menu, chk_set_t set), int bits)
Definition: m_items.c:1361
void M_Menu_BasedirPrompt(ftemanifest_t *man)
Definition: m_single.c:1267
menupicture_t * MC_AddSelectablePicture(emenu_t *menu, int x, int y, int height, const char *picname)
Definition: m_items.c:1034
qboolean MP_Init(void)
Definition: pr_menu.c:3088
void Menu_Prompt(void(*callback)(void *, promptbutton_t), void *ctx, const char *messages, const char *optionyes, const char *optionno, const char *optioncancel, qboolean highpri)
Definition: menu.c:623
void M_Menu_Mods_f(void)
Definition: m_options.c:4460
menuframe_t * MC_AddFrameStart(emenu_t *menu, int y)
Definition: m_items.c:1333
void MN_Shutdown(void)
Definition: m_native.c:365
menubutton_t *VARGS MC_AddConsoleCommandf(emenu_t *menu, int lhs, int rhs, int y, int rightalign, const char *text, char *command,...)
Definition: m_items.c:1642
void Plug_Tick(void)
Definition: plugin.c:1286
struct menucheck_s menucheck_t
void Plug_SBar(playerview_t *pv)
Definition: plugin.c:1418
menuedit_t * MC_AddEdit(emenu_t *menu, int cx, int ex, int y, const char *text, const char *def)
Definition: m_items.c:1222
struct menuresel_s menuresel_t
void M_Init(void)
Definition: menu.c:1506
qboolean MP_UsingGamecodeLoadingScreen(void)
Definition: pr_menu.c:3350
void M_UnbindCommand(const char *command)
Definition: menu.c:1023
menutext_t * MC_AddWhiteText(emenu_t *menu, int lhs, int rhs, int y, const char *text, int rightalign)
Definition: m_items.c:959
menupicture_t * MC_AddCenterPicture(emenu_t *menu, int y, int height, const char *picname)
Definition: m_items.c:1086
void Plug_DrawReloadImages(void)
void M_ToggleMenu_f(void)
Definition: menu.c:366
menu_t * promptmenu
Definition: menu.c:26
menucombo_t * MC_AddCvarCombo(emenu_t *menu, int tx, int cx, int y, const char *caption, cvar_t *cvar, const char **ops, const char **values)
Definition: m_items.c:1482
void M_Menu_Keys_f(void)
Definition: menu.c:926
qboolean MP_Toggle(int mode)
Definition: pr_menu.c:3464
void M_Menu_Options_f(void)
Definition: m_options.c:257
qboolean Plugin_ExecuteString(void)
int M_FindKeysForCommand(int bindmap, int pnum, const char *command, int *keylist, int *keymods, int keycount)
Definition: menu.c:330
int MC_AddBulk(emenu_t *menu, menuresel_t *resel, menubulk_t *bulk, int xstart, int xtextend, int y)
Definition: m_items.c:2703
emenu_t * M_CreateMenu(int extrasize)
Definition: m_items.c:1934
void M_Menu_ServerList_f(void)
struct menucustom_s menucustom_t
void M_DrawCharacter(int cx, int line, unsigned int num)
void Menu_Unlink(menu_t *menu, qboolean forced)
Definition: menu.c:78
menu_export_t * mn_entry
Definition: m_native.c:4
int M_GameType(void)
Definition: menu.c:1581
void M_Menu_Save_f(void)
Definition: m_single.c:225
const char * M_ChooseAutoSave(void)
Definition: m_single.c:109
void MP_RegisterCvarsAndCmds(void)
Definition: pr_menu.c:3333
qboolean Plug_CenterPrintMessage(char *buffer, int clientnum)
Definition: plugin.c:1541
qboolean Menu_IsLinked(menu_t *menu)
Definition: menu.c:53
void M_Shutdown(qboolean total)
Definition: menu.c:1474
int QDECL M_FindKeysForBind(int bindmap, const char *command, int *keylist, int *keymods, int keycount)
Definition: menu.c:270
void M_Menu_Installer(void)
Definition: m_options.c:4563
menu_t * topmenu
Definition: menu.c:25
menuslider_t * MC_AddSlider(emenu_t *menu, int tx, int sx, int y, const char *text, cvar_t *var, float min, float max, float delta)
Definition: m_items.c:1382
qboolean MP_ConsoleCommand(const char *cmdtext)
Definition: pr_menu.c:3263
void Plug_FreeAllImages(void)
menucombo_t * MC_AddCombo(emenu_t *menu, int tx, int cx, int y, const char *caption, const char **ops, int initialvalue)
Definition: m_items.c:1418
void M_DrawTextBox(int x, int y, int width, int lines)
Definition: menu.c:187
struct menubulk_s menubulk_t
menu_t * Menu_FindContext(void *ctx)
Definition: menu.c:63
void M_Menu_Setup_f(void)
Definition: m_multi.c:435
menubutton_t * MC_AddConsoleCommandHexen2BigFont(emenu_t *menu, int x, int y, const char *text, const char *command)
Definition: m_items.c:1604
qboolean Plug_ConsoleLinkMouseOver(float x, float y, char *text, char *info)
Definition: plugin.c:1321
menuframe_t * MC_AddFrameEnd(emenu_t *menu, int y)
Definition: m_items.c:1347
void menufixme(void)
void M_Menu_GameOptions_f(void)
Definition: m_multi.c:545
void M_Reinit(void)
Definition: menu.c:1486
qboolean Plug_ChatMessage(char *buffer, int talkernum, int tpflags)
Definition: plugin.c:1521
qboolean Plug_ServerMessage(char *buffer, int messagelevel)
Definition: plugin.c:1501
menuoption_t * MC_AddCursorSmall(emenu_t *menu, menuresel_t *reselection, int x)
Definition: m_items.c:1113
union menuoption_s menuoption_t
void Menu_Draw(void)
Definition: menu.c:165
qboolean Plug_ConsoleLink(char *text, char *info, const char *consolename)
Definition: plugin.c:1345
int MP_GetServerCategory(int index)
Definition: pr_menu.c:3355
emenu_t * M_Options_Title(int *y, int infosize)
Definition: m_options.c:161
promptbutton_t
Definition: menu.h:129
@ PROMPT_YES
Definition: menu.h:130
@ PROMPT_NO
Definition: menu.h:131
@ PROMPT_CANCEL
Definition: menu.h:132
void M_Serverlist_Init(void)
Definition: m_master.c:55
menubox_t * MC_AddBox(emenu_t *menu, int x, int y, int width, int height)
Definition: m_items.c:1272
void M_Print(int cx, int cy, qbyte *str)
Definition: menu.c:699
void M_RemoveAllMenus(qboolean leaveprompts)
Definition: m_items.c:1972
qboolean Plug_Menu_Event(int eventtype, int keyparam, int unicodeparam)
void MP_Draw(void)
Definition: pr_menu.c:3405
mpic_t * QBigFontWorks(void)
Definition: m_items.c:242
void M_Menu_MultiPlayer_f(void)
Definition: m_multi.c:12
menubutton_t * M_FindButton(emenu_t *menu, const char *command)
Definition: m_items.c:1998
int Menu_WantOSK(void)
Definition: menu.c:156
void M_Script_Init(void)
Definition: m_script.c:427
menubind_t * MC_AddBind(emenu_t *menu, int cx, int bx, int y, const char *caption, char *command, const char *tooltip)
Definition: m_items.c:1008
int MP_BuiltinValid(const char *name, int num)
Definition: pr_menu.c:2756
struct menu_s menu_t
void M_RemoveMenu(emenu_t *menu)
Definition: m_items.c:1956
qboolean MN_Init(void)
Definition: m_native.c:378
void M_ReloadMenus(void)
Definition: m_items.c:1961
chk_set_t
Definition: menu.h:225
@ CHK_CHECKED
Definition: menu.h:225
@ CHK_TOGGLE
Definition: menu.h:225
menubutton_t * MC_AddCommand(emenu_t *menu, int lhs, int rhs, int y, const char *text, qboolean(*command)(union menuoption_s *, struct emenu_s *, int))
Definition: m_items.c:1623
const char * var
Definition: pr_lua.c:225
static ALC_API ALCvoid * buffer
Definition: snd_al.c:259
static AL_API ALenum const ALint * values
Definition: snd_al.c:145
Definition: cvar.h:59
Definition: menu.h:314
menuoption_t * selecteditem
Definition: menu.h:337
menutooltip_t * tooltip
Definition: menu.h:340
menuoption_t * mouseitem
Definition: menu.h:338
menuresel_t * reselection
Definition: menu.h:323
void(* remove)(struct emenu_s *)
Definition: menu.h:331
void(* predraw)(struct emenu_s *)
Definition: menu.h:333
int numoptions
Definition: menu.h:322
int ypos
Definition: menu.h:318
menu_t menu
Definition: menu.h:315
int height
Definition: menu.h:320
menuoption_t * options
Definition: menu.h:335
int width
Definition: menu.h:319
menuoption_t * cursoritem
Definition: menu.h:344
int cursorpos
Definition: menu.h:343
qboolean nobacktint
Definition: menu.h:326
int xpos
Definition: menu.h:317
qboolean(* key)(struct emenu_s *, int key, unsigned int unicode)
Definition: menu.h:332
void(* reset)(struct emenu_s *)
Definition: menu.h:330
void * data
Definition: menu.h:328
double tooltiptime
Definition: menu.h:341
void(* postdraw)(struct emenu_s *)
Definition: menu.h:334
qboolean dontexpand
Definition: menu.h:321
qboolean iszone
Definition: menu.h:325
Definition: common.h:736
Definition: keys.h:324
Definition: api_menu.h:190
Definition: menu.h:100
qboolean lowpriority
Definition: menu.h:111
qboolean(* joyaxis)(struct menu_s *, unsigned int devid, int axis, float val)
Definition: menu.h:108
void * ctx
Definition: menu.h:103
struct menu_s * prev
Definition: menu.h:101
qboolean(* keyevent)(struct menu_s *, qboolean isdown, unsigned int devid, int key, int unicode)
Definition: menu.h:106
qboolean isopaque
Definition: menu.h:112
struct key_cursor_s * cursor
Definition: menu.h:110
void(* videoreset)(struct menu_s *)
Definition: menu.h:104
void(* drawmenu)(struct menu_s *)
Definition: menu.h:109
void(* release)(struct menu_s *, qboolean forced)
Definition: menu.h:105
qboolean showosk
Definition: menu.h:114
qboolean persist
Definition: menu.h:113
qboolean(* mousemove)(struct menu_s *, qboolean abs, unsigned int devid, float x, float y)
Definition: menu.h:107
Definition: menu.h:275
char * command
Definition: menu.h:279
char * caption
Definition: menu.h:278
int captionwidth
Definition: menu.h:277
menucommon_t common
Definition: menu.h:276
Definition: menu.h:257
int width
Definition: menu.h:259
int height
Definition: menu.h:260
menucommon_t common
Definition: menu.h:258
Definition: menu.h:374
int variant
Definition: menu.h:376
float min
Definition: menu.h:383
union menuoption_s ** ret
Definition: menu.h:392
int selectedoption
Definition: menu.h:391
float max
Definition: menu.h:384
const char ** options
Definition: menu.h:389
int flags
Definition: menu.h:381
const char * tooltip
Definition: menu.h:378
cvar_t * cvar
Definition: menu.h:380
char * consolecmd
Definition: menu.h:379
float delta
Definition: menu.h:385
char * cvarname
Definition: menu.h:388
menutype_t type
Definition: menu.h:375
int spacing
Definition: menu.h:393
qboolean(* command)(union menuoption_s *, struct emenu_s *, int)
Definition: menu.h:387
qboolean(* func)(struct menucheck_s *option, struct emenu_s *menu, chk_set_t set)
Definition: menu.h:382
qboolean rightalign
Definition: menu.h:386
const char ** values
Definition: menu.h:390
const char * text
Definition: menu.h:377
Definition: menu.h:193
const char * text
Definition: menu.h:195
qboolean(* key)(union menuoption_s *option, struct emenu_s *, int key)
Definition: menu.h:198
qboolean rightalign
Definition: menu.h:197
const char * command
Definition: menu.h:196
menucommon_t common
Definition: menu.h:194
Definition: menu.h:226
menucommon_t common
Definition: menu.h:227
int bits
Definition: menu.h:231
qboolean(* func)(struct menucheck_s *option, struct emenu_s *menu, chk_set_t set)
Definition: menu.h:233
const char * text
Definition: menu.h:228
float value
Definition: menu.h:232
cvar_t * var
Definition: menu.h:230
int textwidth
Definition: menu.h:229
Definition: menu.h:263
char const *const * values
Definition: menu.h:269
menucommon_t common
Definition: menu.h:264
int numoptions
Definition: menu.h:271
char const * caption
Definition: menu.h:267
int selectedoption
Definition: menu.h:272
int captionwidth
Definition: menu.h:266
char const *const * options
Definition: menu.h:268
cvar_t * cvar
Definition: menu.h:270
Definition: menu.h:174
int height
Definition: menu.h:179
int grav_y
Definition: menu.h:183
menutype_t type
Definition: menu.h:175
qboolean ishidden
Definition: menu.h:188
qboolean noselectionsound
Definition: menu.h:186
qboolean iszone
Definition: menu.h:187
int posy
Definition: menu.h:177
const char * tooltip
Definition: menu.h:185
int width
Definition: menu.h:178
union menuoption_s * next
Definition: menu.h:189
int extracollide
Definition: menu.h:180
int posx
Definition: menu.h:176
Definition: menu.h:243
void * dptr2
Definition: menu.h:246
qboolean(* key)(struct menucustom_s *, struct emenu_s *, int key, unsigned int unicode)
Definition: menu.h:249
void * dptr
Definition: menu.h:245
menucommon_t common
Definition: menu.h:244
int dint
Definition: menu.h:247
void(* draw)(int x, int y, struct menucustom_s *, struct emenu_s *)
Definition: menu.h:248
Definition: menu.h:202
int captionwidth
Definition: menu.h:204
qboolean modified
Definition: menu.h:209
int cursorpos
Definition: menu.h:208
cvar_t * cvar
Definition: menu.h:206
const char * caption
Definition: menu.h:205
menucommon_t common
Definition: menu.h:203
qboolean slim
Definition: menu.h:210
Definition: menu.h:282
float frac
Definition: menu.h:285
qboolean mousedown
Definition: menu.h:284
menucommon_t common
Definition: menu.h:283
union menuoption_s * suboptions
Definition: menu.h:286
Definition: menu.h:252
char * picturename
Definition: menu.h:254
menucommon_t common
Definition: menu.h:253
Definition: menu.h:310
int x
Definition: menu.h:311
int y
Definition: menu.h:311
Definition: menu.h:212
cvar_t * var
Definition: menu.h:220
const char * text
Definition: menu.h:222
float min
Definition: menu.h:214
float smallchange
Definition: menu.h:217
float largechange
Definition: menu.h:218
float max
Definition: menu.h:215
float current
Definition: menu.h:216
float vx
Definition: menu.h:219
int textwidth
Definition: menu.h:221
menucommon_t common
Definition: menu.h:213
Definition: menu.h:236
const char * text
Definition: menu.h:238
qboolean isred
Definition: menu.h:240
menucommon_t common
Definition: menu.h:237
int rightalign
Definition: menu.h:239
Definition: menu.h:304
conchar_t * end
Definition: menu.h:305
conchar_t text[1]
Definition: menu.h:306
Definition: client.h:639
Definition: menu.h:289
menuframe_t frame
Definition: menu.h:301
menuedit_t edit
Definition: menu.h:292
menucommon_t common
Definition: menu.h:290
menubind_t bind
Definition: menu.h:300
menuslider_t slider
Definition: menu.h:294
menucheck_t check
Definition: menu.h:299
menubox_t box
Definition: menu.h:298
menupicture_t picture
Definition: menu.h:297
menucustom_t custom
Definition: menu.h:296
menubutton_t button
Definition: menu.h:291
menutext_t text
Definition: menu.h:295
menucombo_t combo
Definition: menu.h:293