2016-01-18 05:22:07 +00:00
|
|
|
#pragma progs_dat "../menu.dat"
|
|
|
|
|
2021-04-08 19:16:34 +00:00
|
|
|
//#pragma target fte
|
2020-08-13 10:09:39 +00:00
|
|
|
#define MENU //select the module
|
2021-04-08 19:16:34 +00:00
|
|
|
#include "fteextensions.qc" //also sets up system defs
|
2016-01-18 05:22:07 +00:00
|
|
|
|
|
|
|
#includelist
|
2020-08-13 10:09:39 +00:00
|
|
|
menusys/mitems.qc //root item type
|
|
|
|
menusys/mitems_common.qc //basic types
|
|
|
|
menusys/mitem_desktop.qc //other sort of root item
|
|
|
|
menusys/mitem_exmenu.qc //fullscreen/exclusive menus
|
|
|
|
menusys/mitem_edittext.qc //simple text editor
|
|
|
|
menusys/mitem_tabs.qc //tabs
|
|
|
|
menusys/mitem_colours.qc //colour picker
|
|
|
|
menusys/mitem_checkbox.qc //checkbox (boolean thingies)
|
|
|
|
menusys/mitem_slider.qc //scrollbars
|
|
|
|
menusys/mitem_combo.qc //multiple-choice thingies
|
|
|
|
menusys/mitem_bind.qc //key binding thingie
|
2016-01-18 05:22:07 +00:00
|
|
|
menusys/mitem_spinnymodel.qc //menu art
|
|
|
|
#endlist
|
|
|
|
|
|
|
|
//might as well put this here.
|
|
|
|
void(mitem_desktop desktop) M_Pop =
|
|
|
|
{
|
|
|
|
mitem it = desktop.item_kactivechild;
|
|
|
|
if (it)
|
|
|
|
it.item_remove();
|
|
|
|
};
|
|
|
|
|
|
|
|
//define the commands.
|
|
|
|
//cmd argments are: Name, Function, Sourcefile(may be empty)
|
2016-07-12 00:40:13 +00:00
|
|
|
#define concommandslist \
|
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
|
|
|
cmd("m_main", M_Main, menu/main.qc, "Main Menu") \
|
|
|
|
cmd("m_pop", M_Pop, , __NULL__) \
|
|
|
|
cmd("m_options", M_Options, menu/options.qc, __NULL__) \
|
|
|
|
cmd("m_keys", M_Options_Keys, menu/options_keys.qc, "Fix up the stupid default key bindings.") \
|
|
|
|
cmd("m_basicopts", M_Options_Basic, menu/options_basic.qc, "Change your public player settings, like name.") \
|
|
|
|
cmd("m_video", M_Options_Video, menu/options_video.qc, "Change video modes and devices.") \
|
|
|
|
cmd("m_effects", M_Options_Effects, menu/options_effects.qc, __NULL__) \
|
|
|
|
cmd("m_audio", M_Options_Audio, menu/options_audio.qc, "Tweak audio/voip devices+volumes+etc.") \
|
|
|
|
cmd("m_particles", M_Options_Particles, menu/options_particles.qc, __NULL__) \
|
|
|
|
cmd("m_hud", M_Options_Hud, menu/options_hud.qc, "Select which HUD layout to use") \
|
|
|
|
cmd("m_load", M_Load, menu/loadsave.qc, "Load a saved game") \
|
|
|
|
cmd("m_save", M_Save, , "Save the game for later, or for retconnoisseur purposes.") \
|
|
|
|
cmd("m_quit", M_Quit, menu/quit.qc, "Choose the cowards option") \
|
|
|
|
cmd("m_mods", M_Menu_Mods, menu/mods.qc, "Switch mod") \
|
|
|
|
cmd("m_updates", M_Menu_Updates, menu/updates.qc, __NULL__) \
|
|
|
|
cmd("m_cvars", M_Menu_Cvars, menu/cvars.qc, "Advanced confguration of all settings.") \
|
|
|
|
cmd("m_newgame", M_NewGame, menu/newgame.qc, "Start a new game!") \
|
|
|
|
cmd("m_servers", M_Servers, menu/servers.qc, "Join someone else's game") \
|
|
|
|
cmd("m_configs", M_Configs, menu/options_configs.qc, __NULL__) \
|
|
|
|
cmd("m_reset", M_Reset, , __NULL__) \
|
|
|
|
cmd("m_dir", M_Dir, , "Debug command to list data files (from qc's perspective).") \
|
|
|
|
cmd("m_cat", M_FOpen, , "Debug command to display the contents of data files (with qc's access rights).") \
|
|
|
|
cmd("m_preset", M_Preset, menu/presets.qc, __NULL__)
|
2016-01-18 05:22:07 +00:00
|
|
|
|
|
|
|
//make sure all the right files are included
|
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
|
|
|
#define cmd(n,fnc,inc,desc) inc
|
2016-01-18 05:22:07 +00:00
|
|
|
#includelist
|
|
|
|
concommandslist
|
|
|
|
#endlist
|
|
|
|
#undef cmd
|
|
|
|
|
|
|
|
mitem_desktop desktop;
|
|
|
|
void() m_shutdown = {};
|
2020-04-19 03:56:01 +00:00
|
|
|
void(vector screensize) m_draw =
|
|
|
|
{
|
|
|
|
if (dp_workarounds)
|
|
|
|
cltime = gettime(0);
|
2020-07-01 05:06:13 +00:00
|
|
|
items_draw(desktop, screensize);
|
2020-04-19 03:56:01 +00:00
|
|
|
};
|
2020-08-13 10:09:39 +00:00
|
|
|
float(float evtype, float scanx, float chary, float devid) Menu_InputEvent = {return items_keypress(desktop, evtype, scanx, chary, devid);};
|
|
|
|
void(float scan, float chr) m_keydown = {ui.mousepos = getmousepos();queryscreensize();items_keypress(desktop, IE_KEYDOWN, scan, chr, 0);}; //for DP compat.
|
|
|
|
void(float scan, float chr) m_keyup = {ui.mousepos = getmousepos();queryscreensize();items_keypress(desktop, IE_KEYUP, scan, chr, 0);}; //for DP compat.
|
2016-07-12 00:40:13 +00:00
|
|
|
void(float mode) m_toggle
|
|
|
|
{ //mode is stupid. 1=enable,0=disable,-1=actually toggle.
|
|
|
|
if (mode < 0)
|
|
|
|
mode = !desktop.item_kactivechild;
|
2016-01-18 05:22:07 +00:00
|
|
|
if (mode)
|
|
|
|
M_Main(desktop);
|
2016-07-12 00:40:13 +00:00
|
|
|
else while(desktop.item_kactivechild)
|
|
|
|
{
|
|
|
|
mitem it = desktop.item_kactivechild;
|
|
|
|
if (it.item_flags & IF_NOKILL)
|
|
|
|
break;
|
|
|
|
it.item_remove();
|
|
|
|
}
|
|
|
|
|
|
|
|
items_updategrabs(TRUE);
|
2016-01-18 05:22:07 +00:00
|
|
|
};
|
2020-04-19 03:56:01 +00:00
|
|
|
float(string cstr) m_consolecommand =
|
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
|
|
|
{ //for properly registered commands
|
2023-01-09 05:15:06 +00:00
|
|
|
tokenize_console(cstr);
|
2020-04-19 03:56:01 +00:00
|
|
|
string cmd = argv(0);
|
|
|
|
|
|
|
|
switch(cmd)
|
|
|
|
{
|
|
|
|
//switch on the known commands.
|
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
|
|
|
#define cmd(n,f,inc,desc) case n: f(desktop); break;
|
2020-04-19 03:56:01 +00:00
|
|
|
concommandslist
|
|
|
|
#undef cmd
|
|
|
|
default:
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
items_updategrabs(TRUE);
|
|
|
|
return TRUE;
|
|
|
|
}
|
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
|
|
|
void(string cstr) GameCommand =
|
|
|
|
{ //'menu_cmd' hack for compat with DP, used via aliases and mess, instead of using the m_consolecommand entrypoint.
|
|
|
|
tokenize_console(cstr);
|
|
|
|
string cmd = argv(0);
|
|
|
|
|
|
|
|
switch(cmd)
|
|
|
|
{
|
|
|
|
//switch on the known commands.
|
|
|
|
#define cmd(n,f,inc,desc) case n: f(desktop); break;
|
|
|
|
concommandslist
|
|
|
|
#undef cmd
|
|
|
|
default:
|
|
|
|
print("unknown command ", cmd, "\n");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
items_updategrabs(TRUE);
|
|
|
|
};
|
|
|
|
|
2016-01-18 05:22:07 +00:00
|
|
|
|
2020-08-13 10:09:39 +00:00
|
|
|
var float autocvar_dp_workarounds = FALSE;
|
2016-01-18 05:22:07 +00:00
|
|
|
void() m_init =
|
|
|
|
{
|
2020-08-13 10:09:39 +00:00
|
|
|
FingerprintEngine();
|
2020-07-13 21:11:22 +00:00
|
|
|
|
2016-01-18 05:22:07 +00:00
|
|
|
desktop = spawn(mitem_desktop);
|
|
|
|
|
2020-04-19 03:56:01 +00:00
|
|
|
if (checkbuiltin(registercommand))
|
|
|
|
{
|
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
|
|
|
#define cmd(n,f,inc,desc) registercommand(n,desc);
|
2020-04-19 03:56:01 +00:00
|
|
|
concommandslist
|
|
|
|
#undef cmd
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
|
|
|
//register the console commands via the alias command. ugly.
|
|
|
|
#define cmd(n,f,inc,desc) localcmd("alias " n " \"menu_cmd " n " $*\"\n");
|
2020-04-19 03:56:01 +00:00
|
|
|
concommandslist
|
2016-01-18 05:22:07 +00:00
|
|
|
#undef cmd
|
2020-04-19 03:56:01 +00:00
|
|
|
}
|
2016-01-18 05:22:07 +00:00
|
|
|
|
|
|
|
//work around some dp differences/bugs.
|
2020-08-13 10:09:39 +00:00
|
|
|
if (autocvar(dp_workarounds, FALSE))
|
2016-01-18 05:22:07 +00:00
|
|
|
dp_workarounds = TRUE;
|
|
|
|
|
|
|
|
if (dp_workarounds)
|
|
|
|
print("^1WORKING AROUND DP BUGS\n");
|
|
|
|
|
|
|
|
//for compat with DP, 'none' is the default cursor in menuqc.
|
|
|
|
//naturally this is not ideal.
|
|
|
|
if (checkextension("FTE_QC_HARDWARECURSORS"))
|
|
|
|
setcursormode(TRUE, "");
|
|
|
|
else
|
|
|
|
print("No hardware cursors\n");
|
|
|
|
|
|
|
|
if (clientstate() == 1) //disconnected==1, supposedly
|
|
|
|
m_toggle(1);
|
|
|
|
};
|
2020-07-13 21:11:22 +00:00
|
|
|
|