2004-08-21 01:25:48 +00:00
/*
Copyright ( C ) 1996 - 1997 Id Software , Inc .
This program is free software ; you can redistribute it and / or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation ; either version 2
of the License , or ( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
2007-10-12 10:27:51 +00:00
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE .
2004-08-21 01:25:48 +00:00
See the GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
*/
# ifndef __BOTHDEFS_H
# define __BOTHDEFS_H
2011-03-30 20:10:24 +00:00
// release version
# define FTE_VER_MAJOR 1
2019-09-04 07:59:40 +00:00
# define FTE_VER_MINOR 7
2011-03-30 20:10:24 +00:00
2005-11-29 23:20:02 +00:00
# if defined(__APPLE__) && defined(__MACH__)
2009-11-04 21:16:50 +00:00
# define MACOSX
2005-11-29 23:20:02 +00:00
# endif
2004-08-21 01:25:48 +00:00
2009-06-21 17:45:33 +00:00
# if defined(__MINGW32_VERSION) || defined(__MINGW__) || defined(__MINGW32__) || defined(__MINGW64__)
2004-08-21 01:25:48 +00:00
# define MINGW
# endif
2005-01-04 08:06:46 +00:00
# if !defined(MINGW) && defined(__GNUC__) && defined(_WIN32)
# define MINGW //Erm, why is this happening?
# endif
2004-08-21 01:25:48 +00:00
2011-09-05 01:48:23 +00:00
# ifdef ANDROID
# define NO_PNG
# define NO_JPEG
# define NO_OGG
# endif
2017-03-26 17:23:53 +00:00
# ifdef _XBOX
# define NO_PNG
# define NO_JPEG
# define NO_OGG
# define NO_ZLIB
# define NOMEDIA
2017-03-27 21:45:45 +00:00
# define NO_FREETYPE
# define HAVE_PACKET
2017-03-26 17:23:53 +00:00
# endif
2017-02-19 00:15:42 +00:00
# ifndef MULTITHREAD
2018-03-24 04:02:09 +00:00
# if !defined(_WIN32) || defined(FTE_SDL) //win32 is annoying
# define NO_MULTITHREAD
# endif
2017-02-19 00:15:42 +00:00
# endif
2013-04-02 05:18:17 +00:00
# ifdef FTE_TARGET_WEB
//no Sys_LoadLibrary support, so we might as well kill this stuff off.
# define NO_PNG
# define NO_JPEG
# define NO_OGG
2020-07-14 01:16:20 +00:00
# ifndef NO_FREETYPE
# define NO_FREETYPE
# endif
2013-04-02 05:18:17 +00:00
# endif
2017-02-19 00:15:42 +00:00
# ifdef D3DQUAKE
2018-03-24 04:02:09 +00:00
# define D3D9QUAKE
//#define D3D11QUAKE
# undef D3DQUAKE
2017-02-19 00:15:42 +00:00
# endif
# define STRINGIFY2(s) #s
# define STRINGIFY(s) STRINGIFY2(s)
2018-03-24 04:02:09 +00:00
# ifndef CONFIG_FILE_NAME
# ifdef HAVE_CONFIG_H
# define CONFIG_FILE_NAME config.h
# elif defined(NOLEGACY)
2018-03-25 09:36:14 +00:00
# undef NOLEGACY
# define CONFIG_FILE_NAME config_nocompat.h
2018-03-24 04:02:09 +00:00
# elif defined(MINIMAL)
# define CONFIG_FILE_NAME config_minimal.h
# else
# define CONFIG_FILE_NAME config_fteqw.h
# endif
# endif
2018-03-04 14:41:16 +00:00
2018-11-19 06:37:25 +00:00
# undef MULTITHREAD
# define HEADLESSQUAKE //usable renderers are normally specified via the makefile, but HEADLESS is considered a feature rather than an actual renderer, so usually gets forgotten about...
2013-03-31 04:21:08 +00:00
2018-11-19 06:37:25 +00:00
//yup, C89 allows this (doesn't like C's token concat though).
# include STRINGIFY(CONFIG_FILE_NAME)
2012-09-30 05:52:03 +00:00
2011-06-29 18:39:11 +00:00
2018-11-19 06:37:25 +00:00
# ifndef MSVCLIBSPATH
2017-02-19 00:15:42 +00:00
# ifdef MSVCLIBPATH
# define MSVCLIBSPATH STRINGIFY(MSVCLIBPATH)
# elif _MSC_VER == 1200
# define MSVCLIBSPATH ".. / libs / vc6-libs / "
# else
# define MSVCLIBSPATH ".. / libs / "
# endif
2018-11-19 06:37:25 +00:00
# endif
2017-02-19 00:15:42 +00:00
2020-06-12 23:29:58 +00:00
# if defined(IMGTOOL) || defined(IQMTOOL)
2019-09-29 02:16:34 +00:00
# undef WEBCLIENT
# undef LOADERTHREAD
# elif defined(MASTERONLY)
2018-12-28 00:04:36 +00:00
# define SV_MASTER
# undef SUBSERVERS
# undef PLUGINS
# undef HUFFNETWORK
# undef SUPPORT_ICE
# undef WEBCLIENT
2022-01-28 10:48:21 +00:00
# undef MULTITHREAD
2018-12-28 00:04:36 +00:00
# undef LOADERTHREAD
# undef PACKAGEMANAGER
# undef PACKAGE_PK3
# undef PACKAGE_Q1PAK
# undef PACKAGE_DOOMWAD
# undef PACKAGE_VPK
# undef PACKAGE_DZIP
2021-06-02 15:29:44 +00:00
# undef AVAIL_XZDEC
2018-12-28 00:04:36 +00:00
# undef AVAIL_GZDEC
2022-01-28 10:48:21 +00:00
# undef SUBSERVERS
# undef HAVE_LEGACY
# undef IPLOG
2018-12-28 00:04:36 +00:00
# else
# if defined(SERVERONLY) && defined(CLIENTONLY)
# undef CLIENTONLY //impossible build. assume the config had CLIENTONLY and they tried building a dedicated server
2018-11-19 06:37:25 +00:00
# endif
2018-12-28 00:04:36 +00:00
# ifndef WEBSVONLY
# ifndef CLIENTONLY
# define HAVE_SERVER
# endif
# ifndef SERVERONLY
# define HAVE_CLIENT
# endif
2018-11-19 06:37:25 +00:00
# endif
2018-09-23 19:35:24 +00:00
# endif
2019-04-07 16:41:09 +00:00
# ifndef NOLEGACY
2019-04-16 22:40:05 +00:00
# define HAVE_LEGACY
2019-04-07 16:41:09 +00:00
# endif
2018-03-24 04:02:09 +00:00
2018-10-23 07:09:06 +00:00
# ifndef HAVE_SERVER
# undef MVD_RECORDING
# endif
2018-03-24 04:02:09 +00:00
//software rendering is just too glitchy, don't use it - unless its the only choice.
2017-05-19 03:32:02 +00:00
# if defined(SWQUAKE) && !defined(_DEBUG) && !defined(__DJGPP__)
2014-10-14 16:42:48 +00:00
# undef SWQUAKE
# endif
2018-03-24 04:02:09 +00:00
# if defined(USE_EGL) && !defined(GLQUAKE)
# undef USE_EGL
# endif
# if defined(WAYLANDQUAKE) && !(defined(__linux__) && (defined(VKQUAKE) || (defined(GLQUAKE) && defined(USE_EGL))))
# undef WAYLANDQUAKE
2017-02-19 00:15:42 +00:00
# endif
2014-10-14 16:42:48 +00:00
2014-10-05 20:04:11 +00:00
//include a file to update the various configurations for game-specific configs (hopefully just names)
# ifdef BRANDING_INC
# include STRINGIFY(BRANDING_INC)
# endif
# ifndef DISTRIBUTION
# define DISTRIBUTION "FTE" //short name used to identify this engine. must be a single word
# endif
# ifndef DISTRIBUTIONLONG
# define DISTRIBUTIONLONG "Forethought Entertainment" //effectively the 'company' name
# endif
# ifndef FULLENGINENAME
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 FULLENGINENAME "FTE QW" //the posh name for the engine, note that 'Quake' is trademarked so we should not be using it here.
2014-10-05 20:04:11 +00:00
# endif
# ifndef ENGINEWEBSITE
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 ENGINEWEBSITE "^8https: //^4fte^8.^4triptohell^8.^4info" //url for program
2014-10-05 20:04:11 +00:00
# endif
2014-09-17 03:04:08 +00:00
2017-02-21 20:22:07 +00:00
# if !defined(_WIN32) || defined(WINRT)
# undef HAVE_SPEECHTOTEXT
# undef AVAIL_MP3_ACM
2018-03-24 04:02:09 +00:00
# undef AVAIL_DSOUND
# undef AVAIL_XAUDIO2
# undef AVAIL_WASAPI
# endif
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
//#if !(defined(__linux__) || defined(__CYGWIN__)) || defined(ANDROID)
// #undef HAVE_GNUTLS
//#endif
2018-03-24 04:02:09 +00:00
# if !defined(_WIN32) || (defined(_MSC_VER) && (_MSC_VER < 1300)) || defined(FTE_SDL)
# undef HAVE_WINSSPI
2017-02-21 20:22:07 +00:00
# endif
2018-03-24 08:33:03 +00:00
//subservers only has code for win32 threads and linux
# if !((defined(_WIN32) && !defined(FTE_SDL) && !defined(WINRT)) || (defined(__linux__) && !defined(ANDROID) && !defined(FTE_SDL)))
# undef SUBSERVERS
# endif
2017-02-21 20:22:07 +00:00
2017-05-23 07:03:07 +00:00
# ifndef HAVE_MIXER
//disable various sound drivers if we can't use them anyway.
# undef AVAIL_DSOUND
# undef AVAIL_XAUDIO2
# undef AVAIL_WASAPI
2020-07-14 00:48:56 +00:00
# undef AUDIO_ALSA
# undef AUDIO_PULSE
2017-05-23 07:03:07 +00:00
# endif
2018-03-24 04:02:09 +00:00
2017-02-21 20:22:07 +00:00
# ifdef NOMEDIA
# undef HAVE_CDPLAYER //includes cd playback. actual cds. faketracks are supported regardless.
# undef HAVE_JUKEBOX //includes built-in jukebox crap
# undef HAVE_MEDIA_DECODER //can play cin/roq, more with plugins
# undef HAVE_MEDIA_ENCODER //capture/capturedemo work.
# undef AVAIL_MP3_ACM //microsoft's Audio Compression Manager api
# undef HAVE_SPEECHTOTEXT //windows speech-to-text thing
# endif
2017-03-26 23:03:02 +00:00
# if defined(_XBOX)
2017-03-27 21:45:45 +00:00
# define D3D8QUAKE
2017-03-26 23:03:02 +00:00
# undef HAVE_TCP //FIXME
# undef HAVE_PACKET //FIXME
# undef SUPPORT_ICE //screw that
# undef PLUGINS //would need LoadLibrary working properly.
# undef AVAIL_DINPUT //xbox apparently only really does controllers.
# undef AVAIL_DSOUND //FIXME
# undef TEXTEDITOR //its hard to edit text when you have just a controller (and no onscreen keyboard)
# undef RAGDOLL //needs a proper physics engine
# undef AVAIL_MP3_ACM //api not supported
2017-03-27 21:45:45 +00:00
# undef AVAIL_OPENAL
2017-03-26 23:03:02 +00:00
# undef HAVE_SPEECHTOTEXT //api not supported
# undef MULTITHREAD //no CreateThread stuff.
# undef SUBSERVERS //single-process.
2017-03-27 21:45:45 +00:00
# undef VOICECHAT
# undef TERRAIN
# undef Q2CLIENT
# undef Q2SERVER
# undef Q3CLIENT
# undef Q3SERVER
# undef HLCLIENT
# undef HLSERVER
# undef VM_Q1
# undef VM_LUA
# undef HALFLIFEMODELS
# undef RUNTIMELIGHTING
# undef HEXEN2
2017-07-31 17:15:37 +00:00
# undef PACKAGE_DOOMWAD
2017-03-27 21:45:45 +00:00
# undef MAP_PROC
# undef Q1BSPS
# undef Q2BSPS
# undef Q3BSPS
# undef RFBSPS
2017-05-28 17:14:23 +00:00
# undef FTPSERVER //ftp server
# undef WEBCLIENT //http client.
# undef FTPCLIENT //ftp client.
2017-03-26 23:03:02 +00:00
# endif
2017-05-19 03:32:02 +00:00
# ifdef __DJGPP__
//no bsd sockets library.
# undef HAVE_TCP
# undef HAVE_PACKET
# undef SUPPORT_ICE
//too lazy to deal with no dlopen
# undef PLUGINS
# undef Q2SERVER
# undef Q3SERVER
# undef Q2CLIENT //fixme...
# undef Q3CLIENT //might as well.
//too lazy to write the code to boot up more cores. dosbox would probably hate it so why bother.
# undef MULTITHREAD
//too lazy to deal with various libraries
# undef VOICECHAT
# undef AVAIL_JPEGLIB
# undef AVAIL_PNGLIB
# undef AVAIL_OGGVORBIS
# endif
2013-04-02 05:18:17 +00:00
# ifdef FTE_TARGET_WEB
2017-05-23 07:03:07 +00:00
//sandboxing means some stuff CANNOT work...
2017-03-26 23:03:02 +00:00
# undef HAVE_TCP //websockets are not real tcp.
# undef HAVE_PACKET //no udp support
2013-07-31 00:20:16 +00:00
//try to trim the fat
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
// #undef VOICECHAT //too lazy to compile opus
2013-07-31 00:20:16 +00:00
# undef HLCLIENT //dlls...
# undef HLSERVER //dlls...
2021-10-22 22:27:58 +00:00
// #undef CL_MASTER //bah. use the site to specify the servers.
2013-07-31 00:20:16 +00:00
# undef SV_MASTER //yeah, because that makes sense in a browser
# undef RAGDOLL //no ode
# undef TCPCONNECT //err...
# undef IRCCONNECT //not happening
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
# if !defined(USE_INTERNAL_BULLET) && !defined(USE_INTERNAL_ODE) && !defined(MODELFMT_GLTF) && !defined(STATIC_EZHUD) && !defined(STATIC_OPENSSL) && !defined(STATIC_Q3)
# undef PLUGINS //pointless
# endif
2013-07-31 00:20:16 +00:00
# undef VM_Q1 //no dlls
# undef MAP_PROC //meh
2021-10-22 22:27:58 +00:00
// #undef HALFLIFEMODELS //blurgh
2017-05-23 07:03:07 +00:00
# undef SUPPORT_ICE //requires udp, so not usable. webrtc could be used instead, but that logic is out of our hands.
2021-10-22 22:27:21 +00:00
// #undef HAVE_MIXER //depend upon openal instead.
2013-07-31 00:20:16 +00:00
//extra features stripped to try to reduce memory footprints
2021-10-22 22:27:58 +00:00
# undef RUNTIMELIGHTING //too slow anyway (kinda needs threads)
2013-07-31 00:20:16 +00:00
# undef Q2SERVER //requires a dll anyway.
2021-10-22 22:27:58 +00:00
// #undef Q2CLIENT //match Q2SERVER (networking is a pain)
// #undef Q3CLIENT //no bots, and networking is a pain
// #undef Q3SERVER //match Q3CLIENT
2014-12-09 14:39:54 +00:00
// #undef Q2BSPS //emscripten can't cope with bss, leading to increased download time. too lazy to fix.
// #undef Q3BSPS //emscripten can't cope with bss, leading to increased download time. too lazy to fix.
2022-02-07 14:34:36 +00:00
// #undef TERRAIN
2014-08-27 08:41:31 +00:00
// #undef PSET_SCRIPT //bss+size
2014-08-25 07:35:41 +00:00
# define GLSLONLY //pointless having the junk
2014-08-27 08:41:31 +00:00
# define GLESONLY //should reduce the conditions a little
2018-03-24 04:02:09 +00:00
# ifndef R_MAX_RECURSE
# define R_MAX_RECURSE 2 //less bss
# endif
2014-08-27 08:41:31 +00:00
// #undef RTLIGHTS
2017-04-18 11:12:17 +00:00
# undef HEADLESSQUAKE
2021-04-17 14:00:51 +00:00
# ifndef NO_FREETYPE
2017-04-18 11:12:17 +00:00
# define NO_FREETYPE
2021-04-17 14:00:51 +00:00
# endif
2013-04-02 05:18:17 +00:00
# endif
2014-03-30 08:55:06 +00:00
# ifdef WINRT
2017-03-26 23:03:02 +00:00
//microsoft do not support winsock any more.
# undef HAVE_TCP
# undef HAVE_PACKET
2014-03-30 08:55:06 +00:00
# undef TCPCONNECT //err...
# undef IRCCONNECT //not happening
# undef AVAIL_DSOUND //yeah, good luck there
# undef AVAIL_DINPUT //nope, not supported.
# undef SV_MASTER //no socket interface
# undef CL_MASTER //no socket interface
# undef MULTITHREAD
2017-04-18 11:12:17 +00:00
# undef HEADLESSQUAKE
2014-03-30 08:55:06 +00:00
# endif
2011-09-05 01:48:23 +00:00
# ifdef ANDROID
2014-08-27 08:41:31 +00:00
# define GLESONLY //should reduce the conditions a little
2017-10-13 17:50:28 +00:00
// #undef HEADLESSQUAKE
2020-07-14 01:16:20 +00:00
# ifndef NO_FREETYPE
# define NO_FREETYPE
# endif
2018-06-18 16:44:29 +00:00
# define NO_OPENAL
2011-09-05 01:48:23 +00:00
# endif
2018-06-18 16:44:29 +00:00
# if (defined(_MSC_VER) && (_MSC_VER < 1500)) || defined(FTE_SDL)
# undef AVAIL_WASAPI //wasapi is available in the vista sdk, while that's compatible with earlier versions, its not really expected until 2008
# endif
2011-09-05 01:48:23 +00:00
2020-10-06 03:17:28 +00:00
# if !defined(HAVE_SERVER) && !defined(SV_MASTER)
# undef HAVE_HTTPSV
# endif
2018-06-18 16:44:29 +00:00
# ifdef NO_MULTITHREAD
# undef MULTITHREAD
# endif
2012-11-27 03:23:19 +00:00
# ifndef MULTITHREAD
2014-10-05 20:04:11 +00:00
//database code requires threads to do stuff async.
2012-11-27 03:23:19 +00:00
# undef USE_SQLITE
# undef USE_MYSQL
2020-07-14 00:48:56 +00:00
# undef AUDIO_PULSE
2012-11-27 03:23:19 +00:00
# endif
2018-06-18 16:44:29 +00:00
# ifdef NO_LIBRARIES //catch-all...
# define NO_DIRECTX
# define NO_PNG
# define NO_JPEG
# define NO_ZLIB
# define NO_OGG
# define NO_FREETYPE
# endif
# ifdef NO_OPENAL
# undef AVAIL_OPENAL
# endif
# ifdef NO_PNG
# undef AVAIL_PNGLIB
# endif
# ifdef NO_JPEG
# undef AVAIL_JPEGLIB
# endif
# ifdef NO_OGG
# undef AVAIL_OGGVORBIS
# endif
# ifdef NO_FREETYPE
# undef AVAIL_FREETYPE
# endif
# ifdef NO_ZLIB
# undef AVAIL_ZLIB
# undef AVAIL_PNGLIB
# undef AVAIL_XZDEC
# undef AVAIL_GZDEC
# endif
2018-08-23 07:04:55 +00:00
# ifdef NO_GNUTLS
# undef HAVE_GNUTLS
# endif
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
# ifdef NO_WINSSPI
# undef HAVE_WINSSPI
# endif
2018-08-23 07:04:55 +00:00
# ifdef NO_OPENGL
# undef GLQUAKE
# undef USE_EGL
# endif
2012-11-27 03:23:19 +00:00
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
# if (defined(HAVE_GNUTLS) || defined(HAVE_WINSSPI) || defined(PLUGINS)) && !defined(FTE_TARGET_WEB)
2017-03-26 23:03:02 +00:00
# define HAVE_SSL
# endif
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
# if (defined(HAVE_GNUTLS) || defined(HAVE_WINSSPI) || defined(PLUGINS)) && !defined(FTE_TARGET_WEB)
2017-05-18 10:24:09 +00:00
//FIXME: HAVE_WINSSPI does not work as a server.
//FIXME: advertising dtls without a valid certificate will probably bug out if a client tries to auto-upgrade.
2017-09-20 11:27:13 +00:00
//FIXME: we don't cache server certs
2023-03-15 17:57:31 +00:00
# define HAVE_DTLS
2017-05-18 10:24:09 +00:00
# endif
2017-03-26 23:03:02 +00:00
2012-11-27 03:23:19 +00:00
# if defined(USE_SQLITE) || defined(USE_MYSQL)
# define SQL
# endif
2004-08-21 01:25:48 +00:00
2023-07-09 18:41:24 +00:00
# if defined(AVAIL_GZDEC) && (!defined(AVAIL_ZLIB) || defined(NO_ZLIB))
2017-02-19 00:15:42 +00:00
//gzip needs zlib to work (pk3s can still contain non-compressed files)
# undef AVAIL_GZDEC
# endif
# if defined(RFBSPS) && !defined(Q3BSPS)
# define Q3BSPS //rbsp might as well depend upon q3bsp - its the same thing but with more lightstyles (support for which can bog down the renderer a little).
# endif
2017-05-18 10:24:09 +00:00
# if defined(QWOVERQ3) && !defined(Q3SERVER)
# undef QWOVERQ3
# endif
2017-07-12 08:15:27 +00:00
# if !defined(NQPROT) || defined(SERVERONLY) || !defined(AVAIL_ZLIB) || defined(DYNAMIC_ZLIB)
# undef PACKAGE_DZIP
# endif
2014-10-05 20:04:11 +00:00
# if (defined(NOLOADERTHREAD) || !defined(MULTITHREAD)) && defined(LOADERTHREAD)
# undef LOADERTHREAD
# endif
2004-08-21 01:25:48 +00:00
# ifndef _WIN32
2007-09-02 19:55:17 +00:00
# undef QTERM //not supported - FIXME: move to native plugin
# endif
2017-02-19 00:15:42 +00:00
# if defined(Q3BSPS) && !defined(Q2BSPS)
// #define Q2BSPS //FIXME: silently enable that as a dependancy, for now
# endif
2004-08-21 01:25:48 +00:00
# if (defined(Q2CLIENT) || defined(Q2SERVER))
# ifndef Q2BSPS
# error "Q2 game support without Q2BSP support. doesn't make sense"
# endif
# if !defined(MD2MODELS) || !defined(SP2MODELS)
# error "Q2 game support without full Q2 model support. doesn't make sense"
# endif
# endif
2013-11-21 23:02:28 +00:00
# ifndef AVAIL_ZLIB
2014-03-30 08:55:06 +00:00
# undef SUPPORT_ICE //depends upon zlib's crc32 for fingerprinting. I cba writing my own.
2013-11-21 23:02:28 +00:00
# endif
2017-03-26 23:03:02 +00:00
# ifndef HAVE_TCP
# undef TCPCONNECT
# undef IRCCONNECT
2017-05-28 17:14:23 +00:00
# undef FTPSERVER //ftp server
# undef FTPCLIENT //ftp client.
2023-07-01 22:20:13 +00:00
# if !defined(FTE_TARGET_WEB)
2017-04-18 11:12:17 +00:00
# undef WEBCLIENT
# endif
2017-03-26 23:03:02 +00:00
# endif
# ifndef HAVE_PACKET
# undef SV_MASTER
2021-10-22 22:27:58 +00:00
# ifndef FTE_TARGET_WEB
# undef CL_MASTER //can use websockets to get a list of usable ws:// or rtc:// servers
# endif
# undef SUPPORT_ICE //webrtc takes all control away from us, the implementation is completely different.
2017-03-26 23:03:02 +00:00
# endif
2004-08-21 01:25:48 +00:00
# ifdef SERVERONLY //remove options that don't make sense on only a server
# undef Q2CLIENT
2004-12-24 08:45:56 +00:00
# undef Q3CLIENT
2009-03-07 05:05:54 +00:00
# undef HLCLIENT
2005-09-14 04:21:02 +00:00
# undef VM_UI
# undef VM_CG
2004-08-21 01:25:48 +00:00
# undef TEXTEDITOR
# undef RUNTIMELIGHTING
2008-11-09 22:29:28 +00:00
# undef PSET_SCRIPT
# undef PSET_CLASSIC
# undef PSET_DARKPLACES
2004-08-21 01:25:48 +00:00
# endif
2007-10-29 06:06:20 +00:00
# ifdef CLIENTONLY //remove optional server components that make no sence on a client only build.
2004-08-21 01:25:48 +00:00
# undef Q2SERVER
2005-08-26 22:56:51 +00:00
# undef Q3SERVER
2009-03-07 05:05:54 +00:00
# undef HLSERVER
2017-05-28 17:14:23 +00:00
# undef FTPSERVER
2018-03-24 04:02:09 +00:00
# undef SUBSERVERS
2007-09-02 19:55:17 +00:00
# undef VM_Q1
2010-12-18 21:30:16 +00:00
# undef SQL
2004-08-21 01:25:48 +00:00
# endif
2019-04-16 22:40:05 +00:00
# ifndef PLUGINS
# undef USE_INTERNAL_BULLET
# undef USE_INTERNAL_ODE
# endif
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
2018-07-05 16:21:44 +00:00
# if (defined(CSQC_DAT) || !defined(CLIENTONLY)) && (defined(PLUGINS)||defined(USE_INTERNAL_BULLET)||defined(USE_INTERNAL_ODE)) //use ode only if we have a constant world state, and the library is enbled in some form.
2015-02-02 08:01:53 +00:00
# define USERBE
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
# endif
2017-02-19 00:15:42 +00:00
# if defined(MD1MODELS) || defined(MD2MODELS) || defined(MD3MODELS)
# define NONSKELETALMODELS
# endif
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
# if defined(ZYMOTICMODELS) || defined(MD5MODELS) || defined(DPMMODELS) || defined(PSKMODELS) || defined(INTERQUAKEMODELS)
# define SKELETALMODELS //defined if we have a skeletal model.
# endif
# if (defined(CSQC_DAT) || !defined(CLIENTONLY)) && defined(SKELETALMODELS)
# define SKELETALOBJECTS //the skeletal objects API is only used if we actually have skeletal models, and gamecode that uses the builtins.
# endif
2015-02-02 08:01:53 +00:00
# if !defined(USERBE) || !defined(SKELETALMODELS)
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
# undef RAGDOLL //not possible to ragdoll if we don't have certain other features.
# endif
2016-07-12 00:40:13 +00:00
# if !defined(RTLIGHTS)
# undef MAP_PROC //doom3 maps kinda NEED rtlights to look decent
2004-08-21 01:25:48 +00:00
# endif
2004-12-15 19:47:56 +00:00
# if !defined(Q3BSPS)
2004-12-24 08:45:56 +00:00
# undef Q3CLIENT //reconsider this (later)
2005-08-26 22:56:51 +00:00
# undef Q3SERVER //reconsider this (later)
2004-12-24 08:45:56 +00:00
# endif
2019-04-07 16:41:09 +00:00
# if defined(DEBUG) || defined(_DEBUG)
2018-03-24 04:02:09 +00:00
# undef NOQCDESCRIPTIONS //don't disable writing fteextensions.qc in debug builds, otherwise how would you ever build one? :o
# endif
2004-12-24 08:45:56 +00:00
# ifndef Q3CLIENT
# undef VM_CG // :(
2005-09-09 23:40:55 +00:00
# undef VM_UI
2004-12-24 08:45:56 +00:00
# else
# define VM_CG
2005-09-09 23:40:55 +00:00
# define VM_UI
2004-12-24 08:45:56 +00:00
# endif
2019-09-04 07:59:40 +00:00
# if defined(VM_Q1) || defined(VM_UI) || defined(VM_CG) || defined(Q3SERVER)
2004-12-24 08:45:56 +00:00
# define VM_ANY
2004-12-15 19:47:56 +00:00
# endif
2020-03-08 17:56:34 +00:00
# if (defined(HAVE_CLIENT) || defined(HAVE_SERVER)) && defined(WEBCLIENT) && defined(PACKAGEMANAGER)
2020-03-08 07:02:37 +00:00
# define MANIFESTDOWNLOADS
# endif
2018-03-24 04:02:09 +00:00
# if (defined(D3D8QUAKE) || defined(D3D9QUAKE) || defined(D3D11QUAKE)) && !defined(D3DQUAKE)
# define D3DQUAKE //shouldn't still matter
# endif
2004-08-21 01:25:48 +00:00
# define PROTOCOLEXTENSIONS
2010-07-11 02:22:39 +00:00
# ifdef MINIMAL
# define IFMINIMAL(x,y) x
# else
# define IFMINIMAL(x,y) y
# endif
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
# ifdef FTE_TARGET_WEB
# define IFWEB(x,y) x
# else
# define IFWEB(x,y) y
# endif
2010-07-11 02:22:39 +00:00
2004-08-21 01:25:48 +00:00
// defs common to client and server
2005-11-03 23:43:13 +00:00
# ifndef PLATFORM
2014-09-17 03:04:08 +00:00
# if defined(FTE_TARGET_WEB)
# define PLATFORM "Web"
2021-10-22 22:27:58 +00:00
# define ARCH_CPU_POSTFIX "web"
# define ARCH_DL_POSTFIX ".wasm"
2015-07-06 14:47:46 +00:00
# elif defined(_WIN32_WCE)
2016-07-26 11:47:59 +00:00
# define PLATFORM "WinCE"
2015-07-06 14:47:46 +00:00
# define ARCH_DL_POSTFIX ".dll"
2014-09-17 03:04:08 +00:00
# elif defined(_WIN32)
2015-07-06 14:47:46 +00:00
# if defined(WINRT)
# define PLATFORM "WinRT" /*those poor poor souls. maybe just maybe I'll actually get the tools for a port, its just a shame that I won't be able to release said port*/
2017-03-26 17:23:53 +00:00
# elif defined(_XBOX)
2017-03-26 17:31:39 +00:00
# define PLATFORM "Xbox"
2005-12-23 01:23:44 +00:00
# else
2016-07-26 11:47:59 +00:00
# define PLATFORM "Win"
2005-11-03 23:43:13 +00:00
# endif
2013-05-03 04:28:08 +00:00
# define ARCH_DL_POSTFIX ".dll"
2015-07-06 14:47:46 +00:00
# elif defined(_WIN16)
# define PLATFORM "Win16"
# define ARCH_DL_POSTFIX ".dll"
2013-11-21 23:02:28 +00:00
# elif defined(__CYGWIN__)
# define PLATFORM "Cygwin" /*technically also windows*/
# define ARCH_DL_POSTFIX ".dll"
2015-07-06 14:47:46 +00:00
# elif defined(ANDROID) || defined(__ANDROID__)
Android: fat presses, vibrator, onscreen keyboard, keep-screen-on, console scaling, touch-based console scrolling, additional bindables.
Some memory leaks fixed.
latency with the nq protocol over loopback is much reduced.
Terrain: now mostly a property of a (q1 for now) bsp map, file format changed, glsl now built in, terrain editor builtin improved/changed, holes supported.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4067 fc73d0e0-1445-4013-8a0c-d673dee63da5
2012-07-14 16:25:18 +00:00
# define PLATFORM "Android" /*technically also linux*/
2005-11-03 23:43:13 +00:00
# elif defined(__linux__)
2016-07-26 11:47:59 +00:00
# define PLATFORM "Linux"
2015-07-06 14:47:46 +00:00
# elif defined(__APPLE__)
2016-07-26 11:47:59 +00:00
# include "TargetConditionals.h"
2015-07-06 14:47:46 +00:00
# if TARGET_IPHONE_SIMULATOR
# define PLATFORM "iOSSim"
# elif TARGET_OS_IPHONE
# define PLATFORM "iOS"
# elif TARGET_OS_MAC
# define PLATFORM "Mac"
# else
# define PLATFORM "Apple"
# endif
2005-11-03 23:43:13 +00:00
# elif defined(__FreeBSD__)
# define PLATFORM "FreeBSD"
# elif defined(__OpenBSD__)
# define PLATFORM "OpenBSD"
# elif defined(__NetBSD__)
# define PLATFORM "NetBSD"
2015-07-06 14:47:46 +00:00
# elif defined(BSD)
# define PLATFORM "BSD"
2005-11-03 23:43:13 +00:00
# elif defined(__MORPHOS__)
# define PLATFORM "MorphOS"
2015-07-06 14:47:46 +00:00
# elif defined(__amigaos__)
# define PLATFORM "AmigaOS"
2005-11-29 23:20:02 +00:00
# elif defined(MACOSX)
# define PLATFORM "MacOS X"
2015-07-06 14:47:46 +00:00
# elif defined(__DOS__)
# define PLATFORM "Dos"
2005-09-29 23:49:24 +00:00
# else
2005-11-03 23:43:13 +00:00
# define PLATFORM "Unknown"
2005-09-29 23:49:24 +00:00
# endif
2004-08-21 01:25:48 +00:00
# endif
2013-05-03 04:28:08 +00:00
# ifndef ARCH_DL_POSTFIX
# define ARCH_DL_POSTFIX ".so"
# endif
2018-11-19 06:37:25 +00:00
# ifndef ARCH_CPU_POSTFIX
# if defined(_M_AMD64) || defined(__amd64__) || defined(__x86_64__)
# ifdef __ILP32__
# define ARCH_CPU_POSTFIX "x32" //32bit pointers, with 16 registers.
# else
# ifdef _WIN32
# define ARCH_CPU_POSTFIX "x64"
# else
# define ARCH_CPU_POSTFIX "amd64"
2019-02-24 08:32:45 +00:00
# define ARCH_ALTCPU_POSTFIX "x86_64"
2018-11-19 06:37:25 +00:00
# endif
# endif
# elif defined(_M_IX86) || defined(__i386__)
# define ARCH_CPU_POSTFIX "x86"
# elif defined(__powerpc__) || defined(__ppc__)
# define ARCH_CPU_POSTFIX "ppc"
2023-02-11 05:20:02 +00:00
# elif defined(__aarch64__) || defined(__arm64__)
2018-11-19 06:37:25 +00:00
# define ARCH_CPU_POSTFIX "arm64"
# elif defined(__arm__)
# ifdef __SOFTFP__
# define ARCH_CPU_POSTFIX "arm"
2017-04-18 11:12:17 +00:00
# else
2018-11-19 06:37:25 +00:00
# define ARCH_CPU_POSTFIX "armhf"
2017-04-18 11:12:17 +00:00
# endif
# else
2018-11-19 06:37:25 +00:00
# define ARCH_CPU_POSTFIX "unk"
2017-04-18 11:12:17 +00:00
# endif
2013-05-03 04:28:08 +00:00
# endif
2004-08-21 01:25:48 +00:00
2021-05-09 13:00:00 +00:00
# if defined(_WIN32)
# define FTE_LITTLE_ENDIAN
# elif defined(__BYTE_ORDER__)
# ifdef __ORDER_BIG_ENDIAN__
# if (__BYTE_ORDER__==__ORDER_BIG_ENDIAN__) && (__FLOAT_WORD_ORDER__==__ORDER_BIG_ENDIAN__)
# define FTE_BIG_ENDIAN
# endif
# endif
# ifdef __ORDER_LITTLE_ENDIAN__
# if (__BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__) && (__FLOAT_WORD_ORDER__==__ORDER_LITTLE_ENDIAN__)
# define FTE_LITTLE_ENDIAN
# endif
# endif
# endif
2004-08-21 01:25:48 +00:00
# ifdef _MSC_VER
2009-11-04 21:16:50 +00:00
# define VARGS __cdecl
# define MSVCDISABLEWARNINGS
2010-03-14 14:35:56 +00:00
# if _MSC_VER >= 1300
# define FTE_DEPRECATED __declspec(deprecated)
2012-12-04 19:37:57 +00:00
# ifndef _CRT_SECURE_NO_WARNINGS
# define _CRT_SECURE_NO_WARNINGS
# endif
# ifndef _CRT_NONSTDC_NO_WARNINGS
# define _CRT_NONSTDC_NO_WARNINGS
# endif
2010-03-14 14:35:56 +00:00
# endif
2009-11-04 21:16:50 +00:00
# define NORETURN __declspec(noreturn)
# endif
# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
# define FTE_DEPRECATED __attribute__((__deprecated__)) //no idea about the actual gcc version
2020-10-26 06:30:35 +00:00
# if defined(_WIN32)
# include <stdio.h>
# ifdef __MINGW_PRINTF_FORMAT
# define LIKEPRINTF(x) __attribute__((format(__MINGW_PRINTF_FORMAT,x,x+1)))
# else
# define LIKEPRINTF(x) __attribute__((format(ms_printf,x,x+1)))
# endif
2016-07-12 00:40:13 +00:00
# else
# define LIKEPRINTF(x) __attribute__((format(printf,x,x+1)))
# endif
2009-11-04 21:16:50 +00:00
# endif
# if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5))
# define NORETURN __attribute__((noreturn))
# endif
2019-04-07 16:41:09 +00:00
//unreachable marks the path leading to it as unreachable too.
# if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
# define FTE_UNREACHABLE __builtin_unreachable()
# endif
2014-03-30 08:55:06 +00:00
//I'm making my own restrict, because msvc's headers can't cope if I #define restrict to __restrict, and quite possibly other platforms too
2012-05-09 15:30:53 +00:00
# if __STDC_VERSION__ >= 199901L
# define fte_restrict restrict
2019-09-25 20:23:24 +00:00
# elif defined(_MSC_VER) && _MSC_VER >= 1400 || __GNUC__ >= 4
2012-05-09 15:30:53 +00:00
# define fte_restrict __restrict
# else
# define fte_restrict
# endif
2016-07-12 00:40:13 +00:00
# if _MSC_VER >= 1300
# define FTE_ALIGN(a) __declspec(align(a))
# elif defined(__clang__)
# define FTE_ALIGN(a) __attribute__((aligned(a)))
# elif __GNUC__ >= 3
# define FTE_ALIGN(a) __attribute__((aligned(a)))
# else
# define FTE_ALIGN(a)
# endif
2009-11-04 21:16:50 +00:00
2019-06-27 14:38:51 +00:00
# if __STDC_VERSION__ >= 201112L
# include <stdalign.h>
# define fte_alignof(type) alignof(qintptr_t)
# elif _MSC_VER
# define fte_alignof(type) __alignof(qintptr_t)
# else
# define fte_alignof(type) sizeof(qintptr_t)
# endif
2021-05-09 13:02:49 +00:00
//WARNING: FTE_CONSTRUCTOR things are unordered.
# ifdef __cplusplus
//use standard constructors in any c++ code...
# define FTE_CONSTRUCTOR(fn) \
static void fn ( void ) ; \
class atinit_ # # fn { atinit_ # # fn ( void ) { fn ( ) ; } } ; \
static void fn ( void )
# elif _MSC_VER
# pragma section(".CRT$XCU",read)
# if _MSC_VER >= 1500 //use '/include' so it doesn't get stripped from linker optimisations
# define INITIALIZER2_(f,p) \
static void f ( void ) ; \
__declspec ( allocate ( " .CRT$XCU " ) ) void ( * f # # _ ) ( void ) = f ; \
__pragma ( comment ( linker , " /include: " p # f " _ " ) ) \
static void f ( void )
# else // '/include' doesn't exist, hope there's no linker optimisations.
# define INITIALIZER2_(f,p) \
static void f ( void ) ; \
__declspec ( allocate ( " .CRT$XCU " ) ) void ( * f # # _ ) ( void ) = f ; \
static void f ( void )
# endif
# ifdef _WIN64
# define INITIALIZER(f) INITIALIZER2_(f,"")
# else
# define INITIALIZER(f) INITIALIZER2_(f,"_")
# endif
# else
//assume gcc/clang...
# define FTE_CONSTRUCTOR(fn) \
__attribute__ ( ( constructor ) ) static void fn ( void )
# endif
2020-09-29 07:09:01 +00:00
//safeswitch(foo){safedefault: break;}
//switch, but errors for any omitted enum values despite the presence of a default case.
//(gcc will generally give warnings without the default, but sometimes you don't have control over the source of your enumeration values)
2021-08-04 21:18:04 +00:00
//note: android's gcc seems to screw up the pop, instead leaving the warnings enabled, which gets horrendously spammy.
# if (__GNUC__ >= 4) && !defined(ANDROID)
2020-09-29 07:09:01 +00:00
# define safeswitch \
_Pragma ( " GCC diagnostic push " ) \
_Pragma ( " GCC diagnostic error \" -Wswitch-enum \" " ) \
_Pragma ( " GCC diagnostic error \" -Wswitch-default \" " ) \
switch
# define safedefault _Pragma("GCC diagnostic pop") default
# else
# define safeswitch switch
# define safedefault default
# endif
2018-04-15 14:31:44 +00:00
//fte_inline must only be used in headers, and requires one and ONLY one fte_inlinebody elsewhere.
//fte_inlinebody must be used on a prototype OUTSIDE of a header.
//fte_inlinestatic must not be used inside any headers at all.
2015-07-14 14:47:00 +00:00
# if __STDC_VERSION__ >= 199901L
//C99 specifies that an inline function is used as a hint. there should be an actual body/copy somewhere (extern inline foo).
# define fte_inline inline //must have non-line 'int foo();' somewhere
# define fte_inlinebody extern inline
2018-04-15 14:31:44 +00:00
# define fte_inlinestatic static inline
2015-07-14 14:47:00 +00:00
# elif defined(_MSC_VER)
//msvc will inline like C++. and that's fine.
# define fte_inline __inline //c++ style
# define fte_inlinebody
2018-04-15 14:31:44 +00:00
# define fte_inlinestatic static __inline
2015-07-14 14:47:00 +00:00
# elif (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5))
//gcc will generally inline where it can - so long as its static. but that doesn't stop it warning
# define fte_inline __attribute__((unused)) static
# define fte_inlinebody static
2019-09-25 20:23:24 +00:00
# if __GNUC__ > 5
# define fte_inlinestatic static inline
# else
# define fte_inlinestatic static
# endif
2015-07-14 14:47:00 +00:00
# else
//make it static so we at least don't get errors (might still get warnings. see above)
# define fte_inline static
# define fte_inlinebody static
2018-04-15 14:31:44 +00:00
# define fte_inlinestatic static
2015-07-14 14:47:00 +00:00
# endif
2009-11-04 21:16:50 +00:00
# ifndef FTE_DEPRECATED
# define FTE_DEPRECATED
# endif
2019-04-07 16:41:09 +00:00
# ifndef FTE_UNREACHABLE
# define FTE_UNREACHABLE
# endif
2009-11-04 21:16:50 +00:00
# ifndef LIKEPRINTF
# define LIKEPRINTF(x)
2004-08-21 01:25:48 +00:00
# endif
# ifndef VARGS
# define VARGS
# endif
2009-11-04 21:16:50 +00:00
# ifndef NORETURN
# define NORETURN
# endif
2004-08-21 01:25:48 +00:00
2009-04-06 00:34:32 +00:00
# ifdef _WIN32
# define ZEXPORT VARGS
# define ZEXPORTVA VARGS
# endif
2019-04-07 16:41:09 +00:00
# ifdef _DEBUG
# undef FTE_UNREACHABLE
# define FTE_UNREACHABLE Sys_Error("Unreachable reached: %s %i\n", __FILE__, __LINE__)
# endif
2019-09-05 00:01:01 +00:00
# ifndef stricmp
# ifdef _WIN32
//Windows-specific...
# define stricmp _stricmp
# define strnicmp _strnicmp
# else
//Posix
# define stricmp strcasecmp
# define strnicmp strncasecmp
# endif
2019-09-04 23:39:39 +00:00
# endif
2009-04-06 00:34:32 +00:00
2004-08-21 01:25:48 +00:00
// !!! if this is changed, it must be changed in d_ifacea.h too !!!
# define CACHE_SIZE 32 // used to align key data structures
# define UNUSED(x) (x = x) // for pesky compiler / lint warnings
// up / down
# define PITCH 0
// left / right
# define YAW 1
// fall over
# define ROLL 2
2013-05-03 04:28:08 +00:00
# define MAX_QPATH 128 // max length of a quake game pathname
2015-05-14 03:06:58 +00:00
# define MAX_OSPATH 1024 // max length of a filesystem pathname (260 on windows, but needs to be longer for utf8)
2019-07-02 04:12:20 +00:00
# define OLD_MAX_QPATH 64 // it was baked into various file formats, which is unfortunate.
2004-08-21 01:25:48 +00:00
# define ON_EPSILON 0.1 // point on plane side epsilon
2017-03-04 19:36:06 +00:00
# define MAX_NQMSGLEN 65536 // max length of a reliable message. FIXME: should be 8000 to play safe with proquake
2004-08-21 01:25:48 +00:00
# define MAX_Q2MSGLEN 1400
# define MAX_QWMSGLEN 1450
Fixes, workarounds, and breakages. Hexen2 should work much better (-hexen2 says no mission pack, -portals says h2mp). Started working on splitting bigcoords per client, far too much work still to go on that. Removed gl_ztrick entirely. Enabled csprogs download by default. Added client support for fitzquake's 666 protocol, needs testing, some cleanup for dp protocols too, no server support, couldn't selectively enable it anyway. Now attempting to cache shadow meshes for explosions and stuff. Played with lightmaps a little, should potentially run a little faster on certain (intel?) cards. Tweeked npfte a little to try to avoid deadlocks and crashes. Fixed sky worldspawn parsing. Added h2mp's model format. Fixed baseline issue in q2 client, made servers generate q2 baselines. MOVETYPE_PUSH will not rotate extra if rotation is forced. Made status command show allowed client types. Changed lighting on weapons - should now be shaded.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/branches/wip@3572 fc73d0e0-1445-4013-8a0c-d673dee63da5
2010-08-11 03:36:31 +00:00
# define MAX_OVERALLMSGLEN 65536 // mvdsv sends packets this big
2004-08-21 01:25:48 +00:00
# define MAX_DATAGRAM 1450 // max length of unreliable message
# define MAX_Q2DATAGRAM MAX_Q2MSGLEN
2017-03-04 19:36:06 +00:00
# define MAX_NQDATAGRAM 1024 // max length of unreliable message with vanilla nq protocol
2004-08-21 01:25:48 +00:00
# define MAX_OVERALLDATAGRAM MAX_DATAGRAM
# define MAX_BACKBUFLEN 1200
2020-03-25 21:29:30 +00:00
# ifdef Q1BSPS
2019-09-10 15:40:04 +00:00
# define lightstyleindex_t unsigned short
2020-03-25 21:29:30 +00:00
# else
# define lightstyleindex_t qbyte
# endif
2019-09-10 15:40:04 +00:00
# define INVALID_LIGHTSTYLE ((lightstyleindex_t)(~0u)) //the style that's invalid, signifying to stop adding more.
2020-03-25 21:29:30 +00:00
# define INVALID_VLIGHTSTYLE ((qbyte)(~0u)) //the style that's invalid for verticies, signifying to stop adding more.
2019-09-10 15:40:04 +00:00
2004-08-21 01:25:48 +00:00
//
// per-level limits
//
2014-08-25 07:35:41 +00:00
# ifdef FTE_TARGET_WEB
# define MAX_EDICTS ((1<<15)-1)
# else
2020-05-14 15:50:26 +00:00
# define MAX_EDICTS ((1<<22)-1) // expandable up to 22 bits
//#define MAX_EDICTS ((1<<18)-1) // expandable up to 22 bits
2014-08-25 07:35:41 +00:00
# endif
2020-05-14 15:50:26 +00:00
2019-09-10 15:40:04 +00:00
# define MAX_NET_LIGHTSTYLES (INVALID_LIGHTSTYLE+1) // 16bit. the last index MAY be used to signify an invalid lightmap in the bsp, but is still valid for rtlights.
2005-09-29 23:49:24 +00:00
# define MAX_STANDARDLIGHTSTYLES 64
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 MAX_PRECACHE_MODELS 16384 // 14bit.
# define MAX_PRECACHE_SOUNDS 4096 // 14bit.
2016-01-18 05:22:07 +00:00
# define MAX_SSPARTICLESPRE 1024 // 14bit. precached particle effect names, for server-side pointparticles/trailparticles.
2009-07-06 01:20:20 +00:00
# define MAX_VWEP_MODELS 32
2004-08-21 01:25:48 +00:00
2021-09-15 20:33:54 +00:00
# define MAX_CSMODELS 2048 // these live entirly clientside
2013-03-12 22:44:00 +00:00
# define MAX_CSPARTICLESPRE 1024
2005-02-12 18:56:04 +00:00
2004-08-21 01:25:48 +00:00
# define SAVEGAME_COMMENT_LENGTH 39
# define MAX_STYLESTRING 64
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
# define MAX_Q2EDICTS 1024
2004-08-21 01:25:48 +00:00
//
// stats are integers communicated to the client by the server
//
# define MAX_QW_STATS 32
enum {
2015-09-01 04:45:15 +00:00
# ifdef QUAKESTATS
2004-08-21 01:25:48 +00:00
STAT_HEALTH = 0 ,
//STAT_FRAGS = 1,
2015-03-03 00:14:43 +00:00
STAT_WEAPONMODELI = 2 ,
2004-08-21 01:25:48 +00:00
STAT_AMMO = 3 ,
STAT_ARMOR = 4 ,
STAT_WEAPONFRAME = 5 ,
STAT_SHELLS = 6 ,
STAT_NAILS = 7 ,
STAT_ROCKETS = 8 ,
STAT_CELLS = 9 ,
STAT_ACTIVEWEAPON = 10 ,
STAT_TOTALSECRETS = 11 ,
STAT_TOTALMONSTERS = 12 ,
STAT_SECRETS = 13 , // bumped on client side by svc_foundsecret
STAT_MONSTERS = 14 , // bumped by svc_killedmonster
STAT_ITEMS = 15 ,
2004-12-05 08:17:46 +00:00
STAT_VIEWHEIGHT = 16 , //same as zquake
STAT_TIME = 17 , //zquake
2013-03-12 23:09:25 +00:00
STAT_MATCHSTARTTIME = 18 ,
2017-02-21 20:22:07 +00:00
//STAT_UNUSED = 19,
2004-08-21 01:25:48 +00:00
# ifdef SIDEVIEWS
STAT_VIEW2 = 20 ,
# endif
2004-12-05 08:17:46 +00:00
STAT_VIEWZOOM = 21 , // DP
2017-07-12 08:15:27 +00:00
# define STAT_VIEWZOOM_SCALE 255
2017-02-21 20:22:07 +00:00
//STAT_UNUSED = 22,
//STAT_UNUSED = 23,
//STAT_UNUSED = 24,
STAT_IDEALPITCH = 25 , //nq-emu
STAT_PUNCHANGLE_X = 26 , //nq-emu
STAT_PUNCHANGLE_Y = 27 , //nq-emu
STAT_PUNCHANGLE_Z = 28 , //nq-emu
STAT_PUNCHVECTOR_X = 29 ,
STAT_PUNCHVECTOR_Y = 30 ,
STAT_PUNCHVECTOR_Z = 31 ,
2004-08-21 01:25:48 +00:00
2018-09-23 19:35:24 +00:00
# ifdef HEXEN2
2012-02-12 05:18:31 +00:00
//these stats are used only when running a hexen2 mod/hud, and will never be used for a quake mod/hud/generic code.
2004-08-21 01:25:48 +00:00
STAT_H2_LEVEL = 32 , // changes stat bar
STAT_H2_INTELLIGENCE , // changes stat bar
STAT_H2_WISDOM , // changes stat bar
STAT_H2_STRENGTH , // changes stat bar
STAT_H2_DEXTERITY , // changes stat bar
STAT_H2_BLUEMANA , // changes stat bar
STAT_H2_GREENMANA , // changes stat bar
STAT_H2_EXPERIENCE , // changes stat bar
2023-06-05 22:51:02 +00:00
# define STAT_H2_CNT_FIRST (STAT_H2_CNT_TORCH)
2004-08-21 01:25:48 +00:00
STAT_H2_CNT_TORCH , // changes stat bar
STAT_H2_CNT_H_BOOST , // changes stat bar
STAT_H2_CNT_SH_BOOST , // changes stat bar
STAT_H2_CNT_MANA_BOOST , // changes stat bar
STAT_H2_CNT_TELEPORT , // changes stat bar
STAT_H2_CNT_TOME , // changes stat bar
STAT_H2_CNT_SUMMON , // changes stat bar
STAT_H2_CNT_INVISIBILITY , // changes stat bar
STAT_H2_CNT_GLYPH , // changes stat bar
STAT_H2_CNT_HASTE , // changes stat bar
STAT_H2_CNT_BLAST , // changes stat bar
STAT_H2_CNT_POLYMORPH , // changes stat bar
STAT_H2_CNT_FLIGHT , // changes stat bar
STAT_H2_CNT_CUBEOFFORCE , // changes stat bar
STAT_H2_CNT_INVINCIBILITY , // changes stat bar
2023-06-05 22:51:02 +00:00
# define STAT_H2_CNT_LAST (STAT_H2_CNT_INVINCIBILITY)
# define STAT_H2_CNT_COUNT (STAT_H2_CNT_LAST+1-STAT_H2_CNT_FIRST)
2004-08-21 01:25:48 +00:00
STAT_H2_ARTIFACT_ACTIVE ,
STAT_H2_ARTIFACT_LOW ,
STAT_H2_MOVETYPE ,
2015-12-28 17:41:39 +00:00
STAT_H2_CAMERAMODE , //entity
2004-08-21 01:25:48 +00:00
STAT_H2_HASTED ,
STAT_H2_INVENTORY ,
STAT_H2_RINGS_ACTIVE ,
STAT_H2_RINGS_LOW ,
2008-06-01 22:06:22 +00:00
STAT_H2_ARMOUR1 ,
STAT_H2_ARMOUR2 ,
STAT_H2_ARMOUR3 ,
STAT_H2_ARMOUR4 ,
2004-08-21 01:25:48 +00:00
STAT_H2_FLIGHT_T ,
STAT_H2_WATER_T ,
STAT_H2_TURNING_T ,
STAT_H2_REGEN_T ,
2015-12-28 17:41:39 +00:00
STAT_H2_PUZZLE1 , //string
STAT_H2_PUZZLE2 , //string
STAT_H2_PUZZLE3 , //string
STAT_H2_PUZZLE4 , //string
STAT_H2_PUZZLE5 , //string
STAT_H2_PUZZLE6 , //string
STAT_H2_PUZZLE7 , //string
STAT_H2_PUZZLE8 , //string
2004-08-21 01:25:48 +00:00
STAT_H2_MAXHEALTH ,
STAT_H2_MAXMANA ,
STAT_H2_FLAGS ,
2008-06-01 22:06:22 +00:00
STAT_H2_PLAYERCLASS ,
2004-08-21 01:25:48 +00:00
2015-12-28 17:41:39 +00:00
STAT_H2_OBJECTIVE1 , //integer
STAT_H2_OBJECTIVE2 , //integer
2018-09-23 19:35:24 +00:00
# endif
2007-09-02 19:55:17 +00:00
2012-02-12 05:18:31 +00:00
STAT_MOVEVARS_AIRACCEL_QW_STRETCHFACTOR = 220 , // DP
STAT_MOVEVARS_AIRCONTROL_PENALTY = 221 , // DP
STAT_MOVEVARS_AIRSPEEDLIMIT_NONQW = 222 , // DP
STAT_MOVEVARS_AIRSTRAFEACCEL_QW = 223 , // DP
STAT_MOVEVARS_AIRCONTROL_POWER = 224 , // DP
2017-02-21 20:22:07 +00:00
STAT_MOVEFLAGS = 225 , // DP
2012-02-12 05:18:31 +00:00
STAT_MOVEVARS_WARSOWBUNNY_AIRFORWARDACCEL = 226 , // DP
STAT_MOVEVARS_WARSOWBUNNY_ACCEL = 227 , // DP
STAT_MOVEVARS_WARSOWBUNNY_TOPSPEED = 228 , // DP
STAT_MOVEVARS_WARSOWBUNNY_TURNACCEL = 229 , // DP
STAT_MOVEVARS_WARSOWBUNNY_BACKTOSIDERATIO = 230 , // DP
STAT_MOVEVARS_AIRSTOPACCELERATE = 231 , // DP
STAT_MOVEVARS_AIRSTRAFEACCELERATE = 232 , // DP
STAT_MOVEVARS_MAXAIRSTRAFESPEED = 233 , // DP
STAT_MOVEVARS_AIRCONTROL = 234 , // DP
STAT_FRAGLIMIT = 235 , // DP
STAT_TIMELIMIT = 236 , // DP
STAT_MOVEVARS_WALLFRICTION = 237 , // DP
STAT_MOVEVARS_FRICTION = 238 , // DP
STAT_MOVEVARS_WATERFRICTION = 239 , // DP
STAT_MOVEVARS_TICRATE = 240 , // DP
STAT_MOVEVARS_TIMESCALE = 241 , // DP
STAT_MOVEVARS_GRAVITY = 242 , // DP
STAT_MOVEVARS_STOPSPEED = 243 , // DP
STAT_MOVEVARS_MAXSPEED = 244 , // DP
STAT_MOVEVARS_SPECTATORMAXSPEED = 245 , // DP
STAT_MOVEVARS_ACCELERATE = 246 , // DP
STAT_MOVEVARS_AIRACCELERATE = 247 , // DP
STAT_MOVEVARS_WATERACCELERATE = 248 , // DP
STAT_MOVEVARS_ENTGRAVITY = 249 , // DP
STAT_MOVEVARS_JUMPVELOCITY = 250 , // DP
STAT_MOVEVARS_EDGEFRICTION = 251 , // DP
STAT_MOVEVARS_MAXAIRSPEED = 252 , // DP
STAT_MOVEVARS_STEPHEIGHT = 253 , // DP
STAT_MOVEVARS_AIRACCEL_QW = 254 , // DP
2007-09-02 19:55:17 +00:00
STAT_MOVEVARS_AIRACCEL_SIDEWAYS_FRICTION = 255 , // DP
2015-09-01 04:45:15 +00:00
# endif
2007-09-02 19:55:17 +00:00
MAX_CL_STATS = 256
2004-08-21 01:25:48 +00:00
} ;
2022-06-26 08:08:43 +00:00
# ifdef QUAKESTATS
2004-08-21 01:25:48 +00:00
//
// item flags
//
2016-07-12 00:40:13 +00:00
# define IT_SHOTGUN (1u<<0)
# define IT_SUPER_SHOTGUN (1u<<1)
# define IT_NAILGUN (1u<<2)
# define IT_SUPER_NAILGUN (1u<<3)
2004-08-21 01:25:48 +00:00
2016-07-12 00:40:13 +00:00
# define IT_GRENADE_LAUNCHER (1u<<4)
# define IT_ROCKET_LAUNCHER (1u<<5)
# define IT_LIGHTNING (1u<<6)
# define IT_SUPER_LIGHTNING (1u<<7)
2004-08-21 01:25:48 +00:00
2016-07-12 00:40:13 +00:00
# define IT_SHELLS (1u<<8)
# define IT_NAILS (1u<<9)
# define IT_ROCKETS (1u<<10)
# define IT_CELLS (1u<<11)
2004-08-21 01:25:48 +00:00
2016-07-12 00:40:13 +00:00
# define IT_AXE (1u<<12)
2004-08-21 01:25:48 +00:00
2016-07-12 00:40:13 +00:00
# define IT_ARMOR1 (1u<<13)
# define IT_ARMOR2 (1u<<14)
# define IT_ARMOR3 (1u<<15)
2004-08-21 01:25:48 +00:00
2016-07-12 00:40:13 +00:00
# define IT_SUPERHEALTH (1u<<16)
2004-08-21 01:25:48 +00:00
2016-07-12 00:40:13 +00:00
# define IT_KEY1 (1u<<17)
# define IT_KEY2 (1u<<18)
2004-08-21 01:25:48 +00:00
2016-07-12 00:40:13 +00:00
# define IT_INVISIBILITY (1u<<19)
2004-08-21 01:25:48 +00:00
2016-07-12 00:40:13 +00:00
# define IT_INVULNERABILITY (1u<<20)
# define IT_SUIT (1u<<21)
# define IT_QUAD (1u<<22)
2004-08-21 01:25:48 +00:00
2016-07-12 00:40:13 +00:00
# define IT_SIGIL1 (1u<<28)
2004-08-21 01:25:48 +00:00
2016-07-12 00:40:13 +00:00
# define IT_SIGIL2 (1u<<29)
# define IT_SIGIL3 (1u<<30)
# define IT_SIGIL4 (1u<<31)
2015-09-01 04:45:15 +00:00
# endif
2004-08-21 01:25:48 +00:00
//
// print flags
//
# define PRINT_LOW 0 // pickup messages
# define PRINT_MEDIUM 1 // death messages
# define PRINT_HIGH 2 // critical messages
# define PRINT_CHAT 3 // chat messages
//split screen stuff
2018-03-25 09:36:14 +00:00
# ifndef MAX_SPLITS
# define MAX_SPLITS 1u //disabled, but must be defined for sanities sake.
# endif
2004-08-21 01:25:48 +00:00
//savegame vars
2018-08-23 06:03:31 +00:00
# define SAVEGAME_COMMENT_LENGTH 39
# define SAVEGAME_VERSION_NQ 5
# define SAVEGAME_VERSION_QW 6 //actually zQuake, but the functional difference is that its qw instead of nq.
# define SAVEGAME_VERSION_FTE_LEG 667 //found in .sav files. this is for legacy-like saved games with multiple players.
# define SAVEGAME_VERSION_FTE_HUB 25000 //found in .fsv files. includes svs.gametype, so bumps should be large.
2021-05-27 11:34:15 +00:00
# define CACHEGAME_VERSION_OLD 513 //lame ordering.
# define CACHEGAME_VERSION_VERBOSE 514 //saved fields got names, making it more extensible.
# define CACHEGAME_VERSION_MODSAVED 515 //qc is responsible for saving all they need to, and restoring it after.
2004-08-21 01:25:48 +00:00
2007-06-20 00:02:54 +00:00
# define PM_DEFAULTSTEPHEIGHT 18
2004-08-21 01:25:48 +00:00
# define dem_cmd 0
# define dem_read 1
# define dem_set 2
# define dem_multiple 3
# define dem_single 4
# define dem_stats 5
# define dem_all 6
2021-04-14 05:21:04 +00:00
#if 0 //fuck sake, just build it in an older chroot.
/*
glibc SUCKS . 64 bit glibc is depending upon glibc 2.14 because of some implementation - defined copy direction change that breaks flash .
or something .
anyway , the actual interface is the same . the old version might be slower , but when updating glibc generally results in also installing systemd , requiring the new version is NOT an option .
*/
# if defined(__GNUC__) && defined(__amd64__) && defined(__linux__) && !defined(FTE_SDL)
# include <features.h> /* for glibc version */
# if defined(__GLIBC__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 14)
__asm__ ( " .symver memcpy,memcpy@GLIBC_2.2.5 " ) ;
__asm__ ( " .symver memmove,memmove@GLIBC_2.2.5 " ) ;
# endif
# if defined(__GLIBC__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 29)
__asm__ ( " .symver exp,exp@GLIBC_2.2.5 " ) ;
__asm__ ( " .symver log,log@GLIBC_2.2.5 " ) ;
__asm__ ( " .symver pow,pow@GLIBC_2.2.5 " ) ;
# endif
# endif
/*end glibc workaround*/
# endif
2004-08-21 01:25:48 +00:00
# endif //ifndef __BOTHDEFS_H