2004-08-23 00:15:46 +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
2005-11-26 03:02:55 +00:00
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE .
2004-08-23 00:15:46 +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 .
*/
// client.h
2020-11-04 10:19:30 +00:00
# include "../common/particles.h"
2005-03-10 03:55:18 +00:00
2014-10-06 17:55:39 +00:00
enum
{
SKIN_NOTLOADED , //not trying to load it. shouldn't really happen, but can.
SKIN_LOADING , //still loading. just do something else for now...
SKIN_LOADED ,
SKIN_FAILED
} ;
2014-09-08 23:47:19 +00:00
typedef struct qwskin_s
2004-08-23 00:15:46 +00:00
{
2006-02-22 23:43:59 +00:00
char name [ 64 ] ;
2014-10-06 17:55:39 +00:00
int loadstate ; // the name isn't a valid skin
//qw skin info
2004-08-23 00:15:46 +00:00
int width ;
int height ;
2014-10-06 17:55:39 +00:00
void * skindata ;
2009-07-17 22:28:16 +00:00
//for hardware 32bit texture overrides
2013-03-12 22:56:10 +00:00
texnums_t textures ;
2014-09-08 23:47:19 +00:00
} qwskin_t ;
2004-08-23 00:15:46 +00:00
// player_state_t is the information needed by a player entity
// to do move prediction and to generate a drawable entity
typedef struct
{
int messagenum ; // all player's won't be updated each frame
double state_time ; // not the same as the packet time,
// because player commands come asyncronously
2019-09-25 20:23:24 +00:00
2004-08-23 00:15:46 +00:00
usercmd_t command ; // last command for prediction
vec3_t origin ;
2019-09-25 20:23:24 +00:00
vec3_t predorigin ; // pre-predicted pos for other players (allowing us to just lerp when active)
2004-08-23 00:15:46 +00:00
vec3_t viewangles ; // only for demos, not from server
vec3_t velocity ;
int weaponframe ;
2013-03-12 22:35:33 +00:00
unsigned int modelindex ;
2004-08-23 00:15:46 +00:00
int frame ;
int skinnum ;
int effects ;
# ifdef PEXT_SCALE
float scale ;
# endif
2006-02-27 00:42:25 +00:00
qbyte colourmod [ 3 ] ;
qbyte alpha ;
2004-08-23 00:15:46 +00:00
# ifdef PEXT_FATNESS
float fatness ;
# endif
int flags ; // dead, gib, etc
int pm_type ;
2019-09-25 20:23:24 +00:00
2012-02-12 05:18:31 +00:00
vec3_t szmins , szmaxs ;
2004-08-23 00:15:46 +00:00
2019-09-25 20:23:24 +00:00
//maybe-propagated... use the networked value if available.
float waterjumptime ; //never networked...
qboolean onground ; //networked with Z_EXT_PF_ONGROUND||replacementdeltas
qboolean jump_held ; //networked with Z_EXT_PM_TYPE
int jump_msec ; // hack for fixing bunny-hop flickering on non-ZQuake servers
vec3_t gravitydir ; //networked with replacementdeltas
2004-08-23 00:15:46 +00:00
} player_state_t ;
# if defined(Q2CLIENT) || defined(Q2SERVER)
2005-11-26 03:02:55 +00:00
typedef enum
2004-08-23 00:15:46 +00:00
{
// can accelerate and turn
Q2PM_NORMAL ,
Q2PM_SPECTATOR ,
// no acceleration or turning
Q2PM_DEAD ,
Q2PM_GIB , // different bounding box
Q2PM_FREEZE
} q2pmtype_t ;
typedef struct
{ //shared with q2 dll
q2pmtype_t pm_type ;
2016-07-12 00:40:13 +00:00
#if 0
int origin [ 3 ] ; // 12.3
# else
short origin [ 3 ] ; // 20.3
# endif
2004-08-23 00:15:46 +00:00
short velocity [ 3 ] ; // 12.3
qbyte pm_flags ; // ducked, jump_held, etc
qbyte pm_time ; // each unit = 8 ms
short gravity ;
short delta_angles [ 3 ] ; // add to command angles to get view direction
// changed by spawns, rotating objects, and teleporters
2018-07-05 16:21:44 +00:00
// short pad;
2004-08-23 00:15:46 +00:00
} q2pmove_state_t ;
typedef struct
2016-01-18 05:22:07 +00:00
{ //shared with q2 dll so cannot be changed
2004-08-23 00:15:46 +00:00
q2pmove_state_t pmove ; // for prediction
// these fields do not need to be communicated bit-precise
vec3_t viewangles ; // for fixed views
vec3_t viewoffset ; // add to pmovestate->origin
vec3_t kick_angles ; // add to view direction to get render angles
// set by weapon kicks, pain effects, etc
vec3_t gunangles ;
vec3_t gunoffset ;
int gunindex ;
int gunframe ;
float blend [ 4 ] ; // rgba full screen effect
2005-11-26 03:02:55 +00:00
2004-08-23 00:15:46 +00:00
float fov ; // horizontal field of view
int rdflags ; // refdef flags
short stats [ Q2MAX_STATS ] ; // fast status bar updates
} q2player_state_t ;
# endif
2008-06-05 07:45:34 +00:00
typedef struct colourised_s {
char name [ 64 ] ;
unsigned int topcolour ;
unsigned int bottomcolour ;
char skin [ 64 ] ;
struct colourised_s * next ;
} colourised_t ;
2005-02-06 02:47:36 +00:00
# define MAX_SCOREBOARDNAME 64
# define MAX_DISPLAYEDNAME 16
2004-08-23 00:15:46 +00:00
typedef struct player_info_s
{
2018-07-05 16:21:44 +00:00
int userid ;
infobuf_t userinfo ;
qboolean userinfovalid ; //set if we actually know the userinfo (ie: false on vanilla nq servers)
char teamstatus [ 128 ] ;
float teamstatustime ;
2004-08-23 00:15:46 +00:00
// scoreboard information
2018-03-04 14:41:16 +00:00
int spectator ;
2004-08-23 00:15:46 +00:00
char name [ MAX_SCOREBOARDNAME ] ;
char team [ MAX_INFO_KEY ] ;
2015-06-24 17:59:57 +00:00
float realentertime ; //pegged against realtime, to cope with potentially not knowing the server's time when we first receive this message
2004-08-23 00:15:46 +00:00
int frags ;
int ping ;
qbyte pl ;
2021-04-14 05:21:04 +00:00
char ruleset [ 19 ] ; //has colour markup to say if its accepted or not
2004-08-23 00:15:46 +00:00
2017-01-24 10:27:39 +00:00
char ip [ 128 ] ;
2015-06-29 23:46:31 +00:00
struct
{
float time ; //invalid if too old.
int health ;
int armour ;
unsigned int items ;
vec3_t org ;
char nick [ 8 ] ; //kinda short, yes.
} tinfo ;
2005-11-30 01:20:53 +00:00
qboolean ignored ;
2010-12-05 02:46:07 +00:00
qboolean vignored ;
2005-11-30 01:20:53 +00:00
2004-08-23 00:15:46 +00:00
// skin information
2008-06-01 22:06:22 +00:00
unsigned int rtopcolor ; //real, according to their userinfo
unsigned int rbottomcolor ;
2004-08-23 00:15:46 +00:00
2018-03-04 14:41:16 +00:00
# ifdef QWSKINS
colourised_t * colourised ;
2004-08-23 00:15:46 +00:00
2014-09-08 23:47:19 +00:00
qwskin_t * qwskin ;
2014-10-06 17:55:39 +00:00
qwskin_t * lastskin ; //last-known-good skin
2018-03-04 14:41:16 +00:00
unsigned int ttopcolor ; //team, according to colour forcing
unsigned int tbottomcolor ;
2004-08-23 00:15:46 +00:00
struct model_s * model ;
2018-03-04 14:41:16 +00:00
# define dtopcolor ttopcolor
# define dbottomcolor tbottomcolor
# else
# define dtopcolor rtopcolor
# define dbottomcolor rbottomcolor
# endif
skinid_t skinid ;
2004-08-23 00:15:46 +00:00
------------------------------------------------------------------------
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
// unsigned short vweapindex;
2014-09-17 03:04:08 +00:00
# ifdef HEXEN2
2010-08-28 17:14:38 +00:00
unsigned char h2playerclass ;
2014-09-17 03:04:08 +00:00
# endif
2004-08-23 00:15:46 +00:00
int prevcount ;
2004-12-08 04:14:52 +00:00
2015-10-27 15:20:15 +00:00
# ifdef QUAKEHUD
struct wstats_s
{
char wname [ 16 ] ;
unsigned int hit ;
unsigned int total ;
} weaponstats [ 16 ] ;
# endif
2004-12-08 04:14:52 +00:00
int stats [ MAX_CL_STATS ] ;
2015-06-12 14:44:50 +00:00
float statsf [ MAX_CL_STATS ] ;
2004-08-23 00:15:46 +00:00
} player_info_t ;
typedef struct
{
2013-03-12 22:53:23 +00:00
double senttime ; // time cmd was sent off
2013-09-06 22:57:44 +00:00
float latency ; // the time the packet was acked. -1=choked, -2=dropped, -3=never sent, -4=reply came back invalid
2013-03-12 22:53:23 +00:00
2004-08-23 00:15:46 +00:00
// generated on client side
2013-03-12 22:53:23 +00:00
usercmd_t cmd [ MAX_SPLITS ] ; // cmd that generated the frame
2013-09-06 22:57:44 +00:00
int cmd_sequence ; //the outgoing move sequence. if not equal to expected, that index was stale and is no longer valid
int server_message_num ; //the inbound frame that was valid when this command was generated
2013-03-12 22:53:23 +00:00
int server_time ;
int client_time ;
2017-08-29 02:29:06 +00:00
float sentgametime ; //nq timings are based upon server time echos.
2013-03-12 22:53:23 +00:00
} outframe_t ;
typedef struct
{
2004-08-23 00:15:46 +00:00
// received from server
2013-09-06 22:57:44 +00:00
int frameid ; //the sequence number of the frame, so we can easily detect which frames are valid without poking all in advance, etc
int ackframe ; //the outgoing sequence this frame acked (for prediction backlerping).
2004-08-23 00:15:46 +00:00
double receivedtime ; // time message was received, or -1
2011-06-16 02:03:57 +00:00
player_state_t playerstate [ MAX_CLIENTS + MAX_SPLITS ] ; // message received that reflects performing
2013-03-12 22:53:23 +00:00
// the usercmd
2004-08-23 00:15:46 +00:00
packet_entities_t packet_entities ;
qboolean invalid ; // true if the packet_entities delta was invalid
2013-03-12 22:53:23 +00:00
} inframe_t ;
2004-08-23 00:15:46 +00:00
# ifdef Q2CLIENT
typedef struct
{
qboolean valid ; // cleared if delta parsing was invalid
int serverframe ;
int servertime ; // server time the message is valid for (in msec)
int deltaframe ;
qbyte areabits [ MAX_Q2MAP_AREAS / 8 ] ; // portalarea visibility bits
2016-01-18 05:22:07 +00:00
q2player_state_t playerstate [ MAX_SPLITS ] ;
int clientnum [ MAX_SPLITS ] ;
2004-08-23 00:15:46 +00:00
int num_entities ;
int parse_entities ; // non-masked index into cl_parse_entities array
} q2frame_t ;
# endif
typedef struct
{
int destcolor [ 3 ] ;
2012-01-17 07:57:46 +00:00
float percent ; // 0-256
2004-08-23 00:15:46 +00:00
} cshift_t ;
# define CSHIFT_CONTENTS 0
# define CSHIFT_DAMAGE 1
# define CSHIFT_BONUS 2
# define CSHIFT_POWERUP 3
# define CSHIFT_SERVER 4
# define NUM_CSHIFTS 5
//
// client_state_t should hold all pieces of the client state
//
2009-11-04 21:16:50 +00:00
//the light array works thusly:
//dlights are allocated DL_LAST downwards to 0, static wlights are allocated DL_LAST+1 to MAX_RTLIGHTS.
//thus to clear the dlights but not rtlights, set the first light to RTL_FIRST
2020-03-25 21:29:30 +00:00
# define dlightbitmask_t size_t
# define DL_LAST (sizeof(dlightbitmask_t)*8-1)
# define RTL_FIRST (sizeof(dlightbitmask_t)*8)
2005-04-16 16:21:27 +00:00
2011-07-30 14:14:56 +00:00
# define LFLAG_NORMALMODE (1<<0) /*ppl with r_shadow_realtime_dlight*/
# define LFLAG_REALTIMEMODE (1<<1) /*ppl with r_shadow_realtime_world*/
# define LFLAG_LIGHTMAP (1<<2)
# define LFLAG_FLASHBLEND (1<<3)
2009-07-05 18:45:53 +00:00
2011-07-30 14:14:56 +00:00
# define LFLAG_NOSHADOWS (1<<8)
# define LFLAG_SHADOWMAP (1<<9)
2018-01-22 19:18:04 +00:00
# define LFLAG_CREPUSCULAR (1<<10) //weird type of sun light that gives god rays
2018-07-22 11:49:37 +00:00
# define LFLAG_ORTHO (1<<11) //sun-style -light
2009-07-05 18:45:53 +00:00
2018-01-22 19:18:04 +00:00
# define LFLAG_INTERNAL (LFLAG_LIGHTMAP|LFLAG_FLASHBLEND) //these are internal to FTE, and never written to disk (ie: .rtlights files shouldn't contain these)
Too many changes, sorry.
Change revision displays, use the SVN commit date instead of using __DATE__ (when there's no local changes). This should allow reproducible builds.
Added s_al_disable cvar, to block openal and all the various problems people have had with it, without having to name an explicit fallback (which would vary by system).
Add mastervolume cvar (for ss).
Add r_shadows 2 (aka fake shadows - for ss).
Add scr_loadingscreen_aspect -1 setting, to disable levelshots entirely, also disables the progress bar (for ss).
Better support for some effectinfo hacks (for ss).
Added dpcompat_nocsqcwarnings (because of lazy+buggy mods like ss).
Rework the dpcsqc versions of project+unproject builtins for better compat (for ss).
Added dpcompat_csqcinputeventtypes to block unexpected csqc input events (for ss).
Better compat with DP's loadfont console command (for ss).
Added dpcompat_smallerfonts cvar to replicate a DP bug (for ss).
Detect dp's m_draw extension, to work around it (for ss).
Cvar dpcompat_ignoremodificationtimes added. A value of 0 favour the most recently modified file, 1 will use DP-like alphabetically sorted preferences (for ss).
loadfont builtin can now accept outline=1 in the sizes arg for slightly more readable fonts.
Fix bbox calcs for rotated entities, fix needed for r_ignorenetpvs 0.
Hackily parse emoji.json to provide :poop: etc suggestions.
Skip prediction entirely when there's no local entity info. This fixes stair-smoothing in xonotic.
screenshot_cubemap will now capture half-float images when saving to ktx or dds files.
Fix support for xcf files larger than 4gb, mostly to avoid compiler warnings.
Fixed size of gfx/loading.lmp when replacement textures are used.
Added mipmap support for rg8 and l8a8 textures.
r_hdr_framebuffer cvar updated to support format names instead of random negative numbers. Description updated to name some interesting ones.
Perform autoupdate _checks_ ONLY with explicit user confirmation (actual updating already needed user confirmation, but this extra step should reduce the chances of us getting wrongly accused of exfiltrating user data if we're run in a sandbox - we ONLY ever included the updating engine's version in the checks, though there's nothing we can do to avoid sending the user's router's IP).
Removed the 'summon satan all over your harddrive' quit message, in case paranoid security researchers are idiots and don't bother doing actual research.
Removed the triptohell.info and fte.triptohell.info certificates, they really need to stop being self-signed. The updates domain is still self-signed for autoupdates.
Video drivers are now able to report supported video resolutions, visible to menuqc. Currently only works with SDL2 builds.
Added setmousepos builtin. Should work with glx+win32 build.
VF_SKYROOM_CAMERA can now accept an extra two args, setviewprop(VF_SKYROOM_CAMERA, org, axis, degrees).
Removed v_skyroom_origin+v_skyroom_orientation cvars in favour just v_skyroom, which should make it behave more like the 'fog' command (used when csqc isn't overriding).
Added R_EndPolygonRibbon builtin to make it faster+easier to generate textured ribbon/cable/etc wide lines (for TW).
sdl: Fix up sys_sdl.c's file enumeration to support wildcards in directories.
edit command now displays end1.bin/end2.bin correctly, because we can.
Finally add support for f_modified - though ruleset_allow_larger_models and ruleset_allow_overlong_sounds generally make it redundant.
Fix threading race condition in sha1 lookups.
Updated f_ruleset to include the same extra flags reported by ezquake.
A mod's default.fmf file can now contain an eg 'mainconfig config.cfg' line (to explicitly set the main config saved with cfg_save_auto 1 etc).
fmf: basegame steam:GameName/GameDir can be used to try to load a mod directory from an installed steam game. The resulting gamedir will be read-only.
HOMEDIR CHANGE: use homedirs only if the basedir cannot be written or a homedir already exists, which should further reduce the probability of microsoft randomly uploading our data to their cloud (but mostly because its annoying to never know where your data is written).
Fixed buf_cvarlist, should work in xonotic now, and without segfaults.
Added an extra arg to URI_Get_Callback calls - the response size, also changed the tempstring to contain all bytes of the response, you need to be careful about nulls though.
Try to work around nvidia's forced-panning bug on x11 when changing video modes. This might screw with other programs.
sdl: support custom icons.
sdl: support choosing a specific display.
Added some documentation to menuqc builtins.
menusys: use outlines for slightly more readable fonts.
menusys: switch vid_width and vid_height combos into a single video mode combo to set both according to reported video modes.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5581 fc73d0e0-1445-4013-8a0c-d673dee63da5
2019-11-20 03:09:50 +00:00
# define LFLAG_DYNAMIC (LFLAG_LIGHTMAP | LFLAG_FLASHBLEND | LFLAG_NORMALMODE)
2005-04-16 16:21:27 +00:00
2004-08-23 00:15:46 +00:00
typedef struct dlight_s
{
int key ; // so entities can reuse same entry
vec3_t origin ;
2009-06-21 17:45:33 +00:00
vec3_t axis [ 3 ] ;
2018-11-19 06:37:25 +00:00
vec3_t angles ; //used only for reflection, to avoid things getting rounded/cycled.
2014-10-05 20:04:11 +00:00
vec3_t rotation ; //cubemap/spotlight rotation
2004-08-23 00:15:46 +00:00
float radius ;
float die ; // stop lighting after this time
float decay ; // drop this each second
float minlight ; // don't add when contributing less
float color [ 3 ] ;
float channelfade [ 3 ] ;
2013-10-08 14:28:11 +00:00
# ifdef RTLIGHTS
2012-01-01 11:22:24 +00:00
vec3_t lightcolourscales ; //ambient, diffuse, specular
2013-10-08 14:28:11 +00:00
# endif
2011-10-27 15:46:36 +00:00
float corona ;
float coronascale ;
2021-08-23 06:37:30 +00:00
float fade [ 2 ] ;
2004-11-27 08:16:25 +00:00
2009-07-05 18:45:53 +00:00
unsigned int flags ;
2019-07-02 04:12:20 +00:00
char cubemapname [ MAX_QPATH ] ;
2018-11-19 06:37:25 +00:00
char * customstyle ;
2009-07-05 18:45:53 +00:00
2015-10-11 11:34:58 +00:00
int coronaocclusionquery ;
unsigned int coronaocclusionresult ;
2009-06-21 17:45:33 +00:00
//the following are used for rendering (client code should clear on create)
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
qboolean rebuildcache ;
2004-11-27 08:16:25 +00:00
struct shadowmesh_s * worldshadowmesh ;
2011-12-26 15:19:13 +00:00
texid_t cubetexture ;
2009-06-21 17:45:33 +00:00
struct {
float updatetime ;
} face [ 6 ] ;
2019-09-10 15:40:04 +00:00
int style ; //multiply by style values if >= 0 && < MAX_LIGHTSTYLES
2009-11-04 21:16:50 +00:00
float fov ; //spotlight
2019-04-01 10:16:36 +00:00
float nearclip ; //for spotlights...
2004-11-29 01:21:00 +00:00
struct dlight_s * next ;
2004-08-23 00:15:46 +00:00
} dlight_t ;
typedef struct
{
int length ;
char map [ MAX_STYLESTRING ] ;
2014-06-25 03:53:11 +00:00
vec3_t colours ;
2017-01-15 13:13:09 +00:00
int colourkey ; //compacted version of the colours, for comparison against caches
2004-08-23 00:15:46 +00:00
} lightstyle_t ;
# define MAX_DEMOS 8
# define MAX_DEMONAME 16
typedef enum {
ca_disconnected , // full screen console with no connection
ca_demostart , // starting up a demo
ca_connected , // netchan_t established, waiting for svc_serverdata
ca_onserver , // processing data lists, donwloading, etc
ca_active // everything is in, so frames can be rendered
} cactive_t ;
typedef enum {
dl_none ,
dl_model ,
dl_sound ,
dl_skin ,
dl_wad ,
dl_single ,
dl_singlestuffed
} dltype_t ; // download type
2014-06-12 23:08:42 +00:00
typedef struct qdownload_s
{
enum { DL_QW , DL_QWCHUNKS , DL_Q3 , DL_DARKPLACES , DL_QWPENDING , DL_HTTP , DL_FTP } method ;
vfsfile_t * file ; // file transfer from server
char dclname [ MAX_OSPATH ] ; //file to read/write the chunklist from, for download resumption.
char tempname [ MAX_OSPATH ] ; //file its currently writing to.
char localname [ MAX_OSPATH ] ; //file its going to be renamed to.
int prefixbytes ; //number of bytes that prefix the above names (ie: package/ or nothing).
char remotename [ MAX_OSPATH ] ; //file its coming from.
float percent ; //for progress indicator.
float starttime ; //for speed info
qofs_t completedbytes ; //number of bytes downloaded, for progress/speed info
qofs_t size ; //total size (may be a guess)
qboolean sizeunknown ; //says that size is a guess
unsigned int filesequence ; //unique file id.
enum fs_relative fsroot ; //where the local+temp file is meant to be relative to.
2018-09-23 19:35:24 +00:00
double ratetime ; //periodically updated
int rate ; //ratebytes/ratetimedelta
int ratebytes ; //updated by download reception code, and cleared when ratetime is bumped
2014-06-12 23:08:42 +00:00
unsigned int flags ;
//chunked downloads uses this
struct dlblock_s
{
qofs_t start ;
qofs_t end ;
enum
{
DLB_MISSING ,
DLB_PENDING ,
DLB_RECEIVED
} state : 16 ;
unsigned int sequence ; //sequence is only valid on pending blocks.
struct dlblock_s * next ;
} * dlblocks ;
} qdownload_t ;
enum qdlabort
{
QDL_FAILED , //delete file, tell server.
QDL_DISCONNECT , //delete file, don't tell server.
QDL_COMPLETED , //rename file, tell server.
} ;
qboolean DL_Begun ( qdownload_t * dl ) ;
void DL_Abort ( qdownload_t * dl , enum qdlabort aborttype ) ; //just frees the download's resources. does not delete the temp file.
2018-09-23 19:35:24 +00:00
qboolean CL_AllowArbitaryDownload ( const char * oldname , const char * localfile ) ;
2014-06-12 23:08:42 +00:00
2004-08-23 00:15:46 +00:00
//
// the client_static_t structure is persistant through an arbitrary number
// of server connections
//
typedef struct
{
// connection information
cactive_t state ;
2005-05-26 12:55:34 +00:00
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
/*Specifies which protocol family we're speaking*/
2005-05-26 12:55:34 +00:00
enum {
CP_UNKNOWN ,
CP_QUAKEWORLD ,
CP_NETQUAKE ,
2005-06-04 04:20:20 +00:00
CP_QUAKE2 ,
2005-08-03 23:14:59 +00:00
CP_QUAKE3 ,
CP_PLUGIN
2005-05-26 12:55:34 +00:00
} protocol ;
2004-08-23 00:15:46 +00:00
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
/*QuakeWorld protocol flags*/
# ifdef PROTOCOLEXTENSIONS
2017-10-12 12:02:25 +00:00
unsigned int fteprotocolextensions ;
unsigned int fteprotocolextensions2 ;
2017-12-28 16:24:50 +00:00
unsigned int ezprotocolextensions1 ;
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
# endif
2017-10-12 12:02:25 +00:00
unsigned int z_ext ;
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
/*NQ Protocol flags*/
enum
{
CPNQ_ID ,
2017-07-12 08:15:27 +00:00
CPNQ_NEHAHRA ,
CPNQ_BJP1 , //16bit models, strict 8bit sounds (otherwise based on nehahra)
2016-02-15 06:01:17 +00:00
CPNQ_BJP2 , //16bit models, strict 16bit sounds
2017-07-12 08:15:27 +00:00
CPNQ_BJP3 , //16bit models, flagged 16bit sounds, 8bit static sounds.
2017-10-12 12:02:25 +00:00
CPNQ_FITZ666 , /*and rmqe999 protocol, which is a strict superset*/
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
CPNQ_DP5 ,
CPNQ_DP6 ,
CPNQ_DP7
} protocol_nq ;
# define CPNQ_IS_DP (cls.protocol_nq >= CPNQ_DP5)
2016-02-15 06:01:17 +00:00
# define CPNQ_IS_BJP (cls.protocol_nq >= CPNQ_BJP1 && cls.protocol_nq <= CPNQ_BJP3)
2016-07-12 00:40:13 +00:00
qboolean proquake_angles_hack ; //angles are always 16bit
2022-01-16 18:41:44 +00:00
# ifdef NQPROT
qboolean qex ; //we're connected to a QuakeEx server, which means lots of special workarounds that are not controlled via the actual protocol version.
# endif
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
2015-12-12 19:25:15 +00:00
int protocol_q2 ;
2005-11-30 01:20:53 +00:00
qboolean findtrack ;
2004-08-23 00:15:46 +00:00
2004-12-29 03:24:21 +00:00
int framecount ;
2006-09-17 00:59:22 +00:00
int realip_ident ;
2008-06-01 22:06:22 +00:00
netadr_t realserverip ;
2006-09-17 00:59:22 +00:00
2004-08-23 00:15:46 +00:00
// network stuff
netchan_t netchan ;
2004-12-15 19:37:30 +00:00
float lastarbiatarypackettime ; //used to mark when packets were sent to prevent mvdsv servers from causing us to disconnect.
2004-08-23 00:15:46 +00:00
2018-07-05 16:21:44 +00:00
infobuf_t userinfo [ MAX_SPLITS ] ;
infosync_t userinfosync ;
2004-08-23 00:15:46 +00:00
char servername [ MAX_OSPATH ] ; // name of server from original connect
2008-11-09 22:29:28 +00:00
struct ftenet_connections_s * sockets ;
2005-11-30 01:20:53 +00:00
2014-06-12 23:08:42 +00:00
qdownload_t * download ;
2005-08-26 22:56:51 +00:00
2004-08-23 00:15:46 +00:00
// demo loop control
int demonum ; // -1 = don't play demos
char demos [ MAX_DEMOS ] [ MAX_DEMONAME ] ; // when not playing
// demo recording info must be here, because record is started before
// entering a map (and clearing client_state_t)
2010-03-14 14:35:56 +00:00
vfsfile_t * demooutfile ;
2008-01-09 00:52:31 +00:00
enum { DPB_NONE , DPB_QUAKEWORLD , DPB_MVD , DPB_EZTV ,
2004-08-23 00:15:46 +00:00
# ifdef NQPROT
DPB_NETQUAKE ,
# endif
# ifdef Q2CLIENT
DPB_QUAKE2
# endif
2016-01-18 05:22:07 +00:00
} demoplayback , demorecording ;
qboolean demohadkeyframe ; //q2 needs to wait for a packet with a key frame, supposedly.
------------------------------------------------------------------------
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
qboolean demoseeking ;
float demoseektime ;
2004-08-23 00:15:46 +00:00
qboolean timedemo ;
2017-07-12 08:15:27 +00:00
char lastdemoname [ MAX_OSPATH ] ;
qboolean lastdemowassystempath ;
2010-03-14 14:35:56 +00:00
vfsfile_t * demoinfile ;
2004-08-23 00:15:46 +00:00
float td_lastframe ; // to meter out one message a frame
int td_startframe ; // host_framecount at start
float td_starttime ; // realtime at second frame of timedemo
2015-04-21 04:12:00 +00:00
float demostarttime ; // the time of the first frame, so we don't get weird results with qw demos
2004-08-23 00:15:46 +00:00
int challenge ;
float latency ; // rolling average
2020-10-26 06:30:35 +00:00
char allow_unmaskedskyboxes ; //skyboxes/domes do not need to be depth-masked when set. FIXME: we treat this as an optimisation hint, but some hl/q2/q3 maps require strict do-not-mask rules to look right.
2004-08-23 00:15:46 +00:00
qboolean allow_anyparticles ;
2014-08-15 02:20:41 +00:00
qboolean allow_watervis ; //fixme: not checked any more
2005-01-05 07:58:50 +00:00
float allow_fbskins ; //fraction of allowance
2004-08-23 00:15:46 +00:00
qboolean allow_cheats ;
qboolean allow_semicheats ; //defaults to true, but this allows a server to enforce a strict ruleset (smackdown type rules).
2016-07-12 00:40:13 +00:00
qboolean allow_csqc ; //disables some legacy/compat things, like proquake parsing.
2004-08-23 00:15:46 +00:00
float maxfps ; //server capped
2013-03-12 22:53:23 +00:00
int deathmatch ;
2004-08-23 00:15:46 +00:00
# ifdef NQPROT
int signon ;
# endif
2008-06-05 07:45:34 +00:00
colourised_t * colourised ;
2017-01-24 10:27:39 +00:00
qboolean nqexpectingstatusresponse ;
2004-08-23 00:15:46 +00:00
} client_static_t ;
extern client_static_t cls ;
2019-07-29 05:28:20 +00:00
enum dlfailreason_e
{
DLFAIL_UNTRIED , //...
DLFAIL_UNSUPPORTED , //eg vanilla nq
DLFAIL_CORRUPTED , //something weird happened (hash fail)
DLFAIL_CLIENTCVAR , //clientside cvar blocked the download
DLFAIL_CLIENTFILE , //some sort of error writing the file
DLFAIL_SERVERCVAR , //serverside setting blocked the download
DLFAIL_REDIRECTED , //server told us to download a different file
DLFAIL_SERVERFILE , //server couldn't find the file
} ;
2004-08-23 00:15:46 +00:00
typedef struct downloadlist_s {
2009-05-24 10:11:17 +00:00
char rname [ 128 ] ;
2005-08-11 04:14:33 +00:00
char localname [ 128 ] ;
2008-11-09 22:29:28 +00:00
unsigned int size ;
unsigned int flags ;
2014-06-12 23:08:42 +00:00
# define DLLF_VERBOSE (1u<<0) //tell the user that its downloading
# define DLLF_REQUIRED (1u<<1) //means that it won't load models etc until its downloaded (ie: requiredownloads 0 makes no difference)
# define DLLF_OVERWRITE (1u<<2) //overwrite it even if it already exists
# define DLLF_SIZEUNKNOWN (1u<<3) //download's size isn't known
# define DLLF_IGNOREFAILED (1u<<4) //
# define DLLF_NONGAME (1u<<5) //means the requested download filename+localname is gamedir explicit (so id1/foo.txt is distinct from qw/foo.txt)
# define DLLF_TEMPORARY (1u<<6) //download it, but don't actually save it (DLLF_OVERWRITE doesn't actually overwrite, but does ignore any local files)
2014-09-02 02:44:43 +00:00
# define DLLF_USEREXPLICIT (1u<<7) //use explicitly requested it, ignore the cl_downloads cvar.
2014-06-12 23:08:42 +00:00
2014-09-02 02:44:43 +00:00
# define DLLF_BEGUN (1u<<8) //server has confirmed that the file exists, is readable, and we've opened a file. should not be set on new requests.
2017-01-13 00:39:50 +00:00
# define DLLF_ALLOWWEB (1u<<9) //failed http downloads should retry but from the game server itself
2021-10-31 18:20:45 +00:00
# define DLLF_TRYWEB (1u<<10) //should be trying to download it from a website...
2019-07-29 05:28:20 +00:00
enum dlfailreason_e failreason ;
2004-08-23 00:15:46 +00:00
struct downloadlist_s * next ;
} downloadlist_t ;
typedef struct {
2009-07-18 20:46:42 +00:00
//current persistant state
2021-08-23 22:14:34 +00:00
trailkey_t trailstate ; //when to next throw out a trail
trailkey_t emitstate ; //when to next emit
2009-07-18 20:46:42 +00:00
//current origin
vec3_t origin ; //current render position
vec3_t angles ;
2011-04-30 17:21:10 +00:00
//previous rendering frame (for trails)
vec3_t lastorigin ;
qboolean isnew ;
2012-02-12 05:18:31 +00:00
qboolean isplayer ;
2011-04-30 17:21:10 +00:00
2009-07-18 20:46:42 +00:00
//intermediate values for frame lerping
2016-07-12 00:40:13 +00:00
//separate upper+lower lerps
float framelerpdeltatime [ FS_COUNT ] ;
float newframestarttime [ FS_COUNT ] ;
int newframe [ FS_COUNT ] ;
float oldframestarttime [ FS_COUNT ] ;
int oldframe [ FS_COUNT ] ;
qbyte basebone ;
2009-07-18 20:46:42 +00:00
//intermediate values for origin lerping of stepping things
2016-07-12 00:40:13 +00:00
int newsequence ;
2009-07-18 20:46:42 +00:00
float orglerpdeltatime ;
float orglerpstarttime ;
2011-04-30 17:21:10 +00:00
vec3_t neworigin ; /*origin that we're lerping towards*/
vec3_t oldorigin ; /*origin that we're lerping away from*/
2009-07-18 20:46:42 +00:00
vec3_t newangle ;
vec3_t oldangle ;
2012-02-17 01:12:37 +00:00
//for further info
------------------------------------------------------------------------
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
int skeletalobject ;
2016-07-12 00:40:13 +00:00
int sequence ; /*so we know if the ent is still valid*/
2012-02-17 01:12:37 +00:00
entity_state_t * entstate ;
2004-08-23 00:15:46 +00:00
} lerpents_t ;
2013-06-23 02:17:02 +00:00
2019-10-18 08:37:38 +00:00
enum
{
FOGTYPE_AIR ,
FOGTYPE_WATER ,
FOGTYPE_SKYROOM ,
FOGTYPE_COUNT
} ;
2013-06-23 02:17:02 +00:00
//state associated with each player 'seat' (one for each splitscreen client)
//note that this doesn't include networking inputlog info.
struct playerview_s
{
int playernum ; //cl.players index for this player.
qboolean nolocalplayer ; //inhibit use of qw-style players, predict based on entities.
2017-05-28 15:42:32 +00:00
qboolean spectator ;
2013-06-23 02:17:02 +00:00
# ifdef PEXT_SETVIEW
int viewentity ; //view is attached to this entity.
# endif
// information for local display
int stats [ MAX_CL_STATS ] ; // health, etc
float statsf [ MAX_CL_STATS ] ; // health, etc
char * statsstr [ MAX_CL_STATS ] ; // health, etc
float item_gettime [ 32 ] ; // cl.time of aquiring item, for blinking
float faceanimtime ; // use anim frame if cl.time < this
2016-07-12 00:40:13 +00:00
2017-05-28 15:42:32 +00:00
# ifdef QUAKEHUD
qboolean sb_showscores ;
qboolean sb_showteamscores ;
2016-07-12 00:40:13 +00:00
# ifdef HEXEN2
2013-06-23 02:17:02 +00:00
int sb_hexen2_cur_item ; //hexen2 hud
float sb_hexen2_item_time ;
qboolean sb_hexen2_extra_info ; //show the extra stuff
qboolean sb_hexen2_infoplaque ;
2016-07-12 00:40:13 +00:00
# endif
2017-05-28 15:42:32 +00:00
# endif
2013-06-23 02:17:02 +00:00
// the client maintains its own idea of view angles, which are
// sent to the server each frame. And only reset at level change
// and teleport times
2021-05-09 13:02:49 +00:00
vec3_t aimangles ; //angles actually being sent to the server (different due to in_vraim)
2013-07-26 17:19:06 +00:00
vec3_t viewangles ; //current angles
vec3_t viewanglechange ; //angles set by input code this frame
2021-08-04 21:16:57 +00:00
short baseangles [ 3 ] ; //networked angles are relative to this value
2013-07-26 17:19:06 +00:00
vec3_t intermissionangles ; //absolute angles for intermission
2013-06-23 02:17:02 +00:00
vec3_t gravitydir ;
// pitch drifting vars
float pitchvel ;
qboolean nodrift ;
float driftmove ;
double laststop ;
2015-04-27 06:19:33 +00:00
int gamerectknown ; //equals cls.framecount if valid
vrect_t gamerect ; //position the player's main view was drawn at this frame.
2013-06-23 02:17:02 +00:00
//prediction state
int pmovetype ;
float entgravity ;
float maxspeed ;
vec3_t simorg ;
vec3_t simvel ;
vec3_t simangles ;
float rollangle ;
2015-04-27 12:51:42 +00:00
float hdr_last ;
2013-06-23 02:17:02 +00:00
2016-02-10 23:23:43 +00:00
int chatstate ; //1=talking, 2=afk
2013-06-23 02:17:02 +00:00
float crouch ; // local amount for smoothing stepups
vec3_t oldorigin ; // to track step smoothing
float oldz , extracrouch , crouchspeed ; // to track step smoothing
qboolean onground ;
float viewheight ;
int waterlevel ; //for smartjump
2019-09-25 20:23:24 +00:00
//for values that are propagated from one frame to the next
//the next frame will always predict from the one we're tracking, where possible.
//these values should all regenerate naturally from networked state (misses should be small/rare and fade when the physics catches up).
struct playerpredprop_s
{
float waterjumptime ;
qboolean onground ;
vec3_t gravitydir ;
qboolean jump_held ;
int jump_msec ; // hack for fixing bunny-hop flickering on non-ZQuake servers
int sequence ;
} prop ;
2016-01-18 05:22:07 +00:00
# ifdef Q2CLIENT
2021-08-19 06:01:52 +00:00
float forcefov ;
int handedness ; //0=right,1=left,2=center/hidden
2016-01-18 05:22:07 +00:00
vec3_t predicted_origin ;
vec3_t predicted_angles ;
vec3_t prediction_error ;
float predicted_step_time ;
float predicted_step ;
# endif
2017-02-21 20:22:07 +00:00
//temporary view kick from weapon firing, angles+origins
float punchangle_cl ; // qw-style angles
vec3_t punchangle_sv ; // nq-style
vec3_t punchorigin ; // nq-style
2013-06-23 02:17:02 +00:00
float v_dmg_time ; //various view knockbacks.
float v_dmg_roll ;
float v_dmg_pitch ;
double bobtime ; //sine wave
double bobcltime ; //for tracking time increments
float bob ; //bob height
vec3_t cam_desired_position ; // where the camera wants to be
int cam_oldbuttons ; //
2015-06-22 11:49:15 +00:00
double cam_lastviewtime ; // timer for wallcam
2015-06-14 01:28:01 +00:00
float cam_reautotrack ; // timer to throttle tracking changes.
2015-06-22 11:49:15 +00:00
int cam_spec_track ; // player# of who we are tracking / want to track / might want to track
2013-06-23 02:17:02 +00:00
enum
{
2015-06-22 11:49:15 +00:00
CAM_FREECAM = 0 , //not attached to another player. we are our own thing (or actually playing).
CAM_PENDING = 1 , //we want to lock on to cam_spec_track, but we don't have their position / stats yet. still freecamming
CAM_WALLCAM = 2 , //locked, cl_chasecam=0. we're watching them from a wall.
CAM_EYECAM = 3 //locked, cl_chasecam=1. we know where they are, we're in their eyes.
# define CAM_ISLOCKED(pv) ((pv)->cam_state > CAM_PENDING)
2016-01-18 05:22:07 +00:00
} cam_state ;
cshift_t cshifts [ NUM_CSHIFTS ] ; // color shifts for damage, powerups and content types
vec4_t screentint ;
2018-10-11 10:31:23 +00:00
vec4_t bordertint ; //won't contain v_cshift values, only powerup+contents+damage+bf flashes
2013-06-23 02:17:02 +00:00
2013-10-08 14:28:11 +00:00
// entity_t viewent; // is this not utterly redundant yet?
2014-05-17 15:25:02 +00:00
struct
{
struct model_s * oldmodel ;
float lerptime ;
float oldlerptime ;
float frameduration ;
int prevframe ;
int oldframe ;
} vm ;
Reworked client support for DPP5+. less code now, its much more graceful.
added waterfog command. waterfog overrides regular fog only when the view is in water.
fixed 64bit printf format specifiers. should work better on winxp64.
fixed some spec angle weirdness.
fixed viewsize 99.99 weirdness with ezhud.
fixed extra offset on the console (exhibited in 64bit builds, but not limited to).
fixed .avi playback, can now actually display frames again.
reimplemented line sparks.
fixed r_editlights_save flipping the light's pitch.
fixed issue with oggs failing to load.
fixed condump to cope with unicode properly.
made sv_bigcoords default except in quake. hexen2 kinda needs it for bsp angle precision.
fixed nq server to not stall weirdly on map changes.
fixed qwprogs svc_cdtrack not bugging out with nq clients on the server.
fixed restart command to load the last map run by the server, instead of start.bsp (when idle)
optimised d3d9 renderer a little. now uses less draw calls, especially with complex scenes. seems to get higher framerates than opengl now.
fixed d3d9 renderer to not bug out quite so much when run fullscreen (shader subsystem is now correctly initialised).
fixed a couple of bugs from font change. also now supports utf-8 in a few more places.
r_editlights_reload no longer generates rtlights inside the void. this resolves a few glitches (but should also help framerates a little).
fixed so corona-only lights won't generate shadowmaps and waste lots of time.
removed lots of #defines from qclib. I should never have made them in the first place, but I was lazy. obviously there's more left that I cba to remove yet.
fixed nested calls with variant-vectors. this fixes csaddon's light editor.
fixed qcc hc calling conventions using redundant stores.
disabled keywords can still be used by using __keyword instead.
fixed ftegccgui grep feature.
fixed motionless-dog qcc bug.
tweaked qcc warnings a little. -Wall is now a viable setting. you should be able to fix all those warnings.
fixed qw svc_intermission + dpp5+ clients bug.
fixed annoying spam about disconnecting in hexen2.
rewrote status command a little to cope with ipv6 addresses more gracefully
fixed significant stall when hibernating/debugging a server with a player sitting on it.
fixed truelightning.
fixed rocketlight overriding pflags.
fixed torches vanishing on vid_restart.
fixed issue with decal scaling.
fixed findentityfield builtin.
fixed fteqcc issue with ptr+1
fixed use of arrays inside class functions.
fixed/implemented fteqcc emulation of pointer opcodes.
added __inout keyword to fteqcc, so that it doesn't feel so horrendous.
fixed sizeof(*foo)
fixed *struct = struct;
fixed recursive structs.
fixed fteqcc warning report.
fixed sdl2 controller support, hopefully.
attempted to implement xinput, including per-player audio playback.
slightly fixed relaxed attitude to mouse focus when running fullscreen.
fixed weird warnings/errors with 'ent.arrayhead' terms. now generates sane errors.
implemented bindmaps (for csqc).
fixed crashing bug with eprint builtin.
implemented subset of music_playlist_* functionality. significant changes to music playback.
fixed some more dpcsqc compat.
fixed binds menu. now displays and accepts modifiers.
fixed issues with huge lightmaps.
fixed protocol determinism with dp clients connecting to fte servers. the initial getchallenge request now inhibits vanilla nq connection requests.
implemented support for 'dupe' userinfo key, allowing clients to request client->server packet duplication. should probably queue them tbh.
implemented sv_saveentfile command.
fixed resume after breaking inside a stepped-over function.
fixed erroneous footer after debugging.
(I wonder just how many things I broke with these fixes)
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4946 fc73d0e0-1445-4013-8a0c-d673dee63da5
2015-07-26 10:56:18 +00:00
struct
{
qboolean defaulted ;
2016-07-12 00:40:13 +00:00
int entnum ;
Reworked client support for DPP5+. less code now, its much more graceful.
added waterfog command. waterfog overrides regular fog only when the view is in water.
fixed 64bit printf format specifiers. should work better on winxp64.
fixed some spec angle weirdness.
fixed viewsize 99.99 weirdness with ezhud.
fixed extra offset on the console (exhibited in 64bit builds, but not limited to).
fixed .avi playback, can now actually display frames again.
reimplemented line sparks.
fixed r_editlights_save flipping the light's pitch.
fixed issue with oggs failing to load.
fixed condump to cope with unicode properly.
made sv_bigcoords default except in quake. hexen2 kinda needs it for bsp angle precision.
fixed nq server to not stall weirdly on map changes.
fixed qwprogs svc_cdtrack not bugging out with nq clients on the server.
fixed restart command to load the last map run by the server, instead of start.bsp (when idle)
optimised d3d9 renderer a little. now uses less draw calls, especially with complex scenes. seems to get higher framerates than opengl now.
fixed d3d9 renderer to not bug out quite so much when run fullscreen (shader subsystem is now correctly initialised).
fixed a couple of bugs from font change. also now supports utf-8 in a few more places.
r_editlights_reload no longer generates rtlights inside the void. this resolves a few glitches (but should also help framerates a little).
fixed so corona-only lights won't generate shadowmaps and waste lots of time.
removed lots of #defines from qclib. I should never have made them in the first place, but I was lazy. obviously there's more left that I cba to remove yet.
fixed nested calls with variant-vectors. this fixes csaddon's light editor.
fixed qcc hc calling conventions using redundant stores.
disabled keywords can still be used by using __keyword instead.
fixed ftegccgui grep feature.
fixed motionless-dog qcc bug.
tweaked qcc warnings a little. -Wall is now a viable setting. you should be able to fix all those warnings.
fixed qw svc_intermission + dpp5+ clients bug.
fixed annoying spam about disconnecting in hexen2.
rewrote status command a little to cope with ipv6 addresses more gracefully
fixed significant stall when hibernating/debugging a server with a player sitting on it.
fixed truelightning.
fixed rocketlight overriding pflags.
fixed torches vanishing on vid_restart.
fixed issue with decal scaling.
fixed findentityfield builtin.
fixed fteqcc issue with ptr+1
fixed use of arrays inside class functions.
fixed/implemented fteqcc emulation of pointer opcodes.
added __inout keyword to fteqcc, so that it doesn't feel so horrendous.
fixed sizeof(*foo)
fixed *struct = struct;
fixed recursive structs.
fixed fteqcc warning report.
fixed sdl2 controller support, hopefully.
attempted to implement xinput, including per-player audio playback.
slightly fixed relaxed attitude to mouse focus when running fullscreen.
fixed weird warnings/errors with 'ent.arrayhead' terms. now generates sane errors.
implemented bindmaps (for csqc).
fixed crashing bug with eprint builtin.
implemented subset of music_playlist_* functionality. significant changes to music playback.
fixed some more dpcsqc compat.
fixed binds menu. now displays and accepts modifiers.
fixed issues with huge lightmaps.
fixed protocol determinism with dp clients connecting to fte servers. the initial getchallenge request now inhibits vanilla nq connection requests.
implemented support for 'dupe' userinfo key, allowing clients to request client->server packet duplication. should probably queue them tbh.
implemented sv_saveentfile command.
fixed resume after breaking inside a stepped-over function.
fixed erroneous footer after debugging.
(I wonder just how many things I broke with these fixes)
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4946 fc73d0e0-1445-4013-8a0c-d673dee63da5
2015-07-26 10:56:18 +00:00
vec3_t origin ;
vec3_t forward ;
vec3_t right ;
vec3_t up ;
2016-07-12 00:40:13 +00:00
size_t reverbtype ;
vec3_t velocity ;
Reworked client support for DPP5+. less code now, its much more graceful.
added waterfog command. waterfog overrides regular fog only when the view is in water.
fixed 64bit printf format specifiers. should work better on winxp64.
fixed some spec angle weirdness.
fixed viewsize 99.99 weirdness with ezhud.
fixed extra offset on the console (exhibited in 64bit builds, but not limited to).
fixed .avi playback, can now actually display frames again.
reimplemented line sparks.
fixed r_editlights_save flipping the light's pitch.
fixed issue with oggs failing to load.
fixed condump to cope with unicode properly.
made sv_bigcoords default except in quake. hexen2 kinda needs it for bsp angle precision.
fixed nq server to not stall weirdly on map changes.
fixed qwprogs svc_cdtrack not bugging out with nq clients on the server.
fixed restart command to load the last map run by the server, instead of start.bsp (when idle)
optimised d3d9 renderer a little. now uses less draw calls, especially with complex scenes. seems to get higher framerates than opengl now.
fixed d3d9 renderer to not bug out quite so much when run fullscreen (shader subsystem is now correctly initialised).
fixed a couple of bugs from font change. also now supports utf-8 in a few more places.
r_editlights_reload no longer generates rtlights inside the void. this resolves a few glitches (but should also help framerates a little).
fixed so corona-only lights won't generate shadowmaps and waste lots of time.
removed lots of #defines from qclib. I should never have made them in the first place, but I was lazy. obviously there's more left that I cba to remove yet.
fixed nested calls with variant-vectors. this fixes csaddon's light editor.
fixed qcc hc calling conventions using redundant stores.
disabled keywords can still be used by using __keyword instead.
fixed ftegccgui grep feature.
fixed motionless-dog qcc bug.
tweaked qcc warnings a little. -Wall is now a viable setting. you should be able to fix all those warnings.
fixed qw svc_intermission + dpp5+ clients bug.
fixed annoying spam about disconnecting in hexen2.
rewrote status command a little to cope with ipv6 addresses more gracefully
fixed significant stall when hibernating/debugging a server with a player sitting on it.
fixed truelightning.
fixed rocketlight overriding pflags.
fixed torches vanishing on vid_restart.
fixed issue with decal scaling.
fixed findentityfield builtin.
fixed fteqcc issue with ptr+1
fixed use of arrays inside class functions.
fixed/implemented fteqcc emulation of pointer opcodes.
added __inout keyword to fteqcc, so that it doesn't feel so horrendous.
fixed sizeof(*foo)
fixed *struct = struct;
fixed recursive structs.
fixed fteqcc warning report.
fixed sdl2 controller support, hopefully.
attempted to implement xinput, including per-player audio playback.
slightly fixed relaxed attitude to mouse focus when running fullscreen.
fixed weird warnings/errors with 'ent.arrayhead' terms. now generates sane errors.
implemented bindmaps (for csqc).
fixed crashing bug with eprint builtin.
implemented subset of music_playlist_* functionality. significant changes to music playback.
fixed some more dpcsqc compat.
fixed binds menu. now displays and accepts modifiers.
fixed issues with huge lightmaps.
fixed protocol determinism with dp clients connecting to fte servers. the initial getchallenge request now inhibits vanilla nq connection requests.
implemented support for 'dupe' userinfo key, allowing clients to request client->server packet duplication. should probably queue them tbh.
implemented sv_saveentfile command.
fixed resume after breaking inside a stepped-over function.
fixed erroneous footer after debugging.
(I wonder just how many things I broke with these fixes)
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4946 fc73d0e0-1445-4013-8a0c-d673dee63da5
2015-07-26 10:56:18 +00:00
} audio ;
2021-05-09 13:02:49 +00:00
struct vrdevinfo_s vrdev [ VRDEV_COUNT ] ;
2013-06-23 02:17:02 +00:00
} ;
2004-08-23 00:15:46 +00:00
//
// the client_state_t structure is wiped completely at every
// server signon
//
typedef struct
{
2004-09-26 00:30:42 +00:00
int fpd ;
2004-08-23 00:15:46 +00:00
int servercount ; // server identification for prespawns
2017-10-12 12:02:25 +00:00
int protocol_qw ;
2005-03-20 02:57:11 +00:00
float gamespeed ;
2020-09-08 05:11:09 +00:00
qboolean csqcdebug ; //redundant, remove '*csqcdebug' serverinfo key.
2005-05-26 12:55:34 +00:00
qboolean allowsendpacket ;
2005-03-20 02:57:11 +00:00
2015-07-03 02:07:41 +00:00
qboolean stillloading ; // set when doing something slow, and the game is still loading.
dpp7: Treat 'dropped' c2s packets as choked when using dpp7 protocols. This is because the protocol provides no way to disambiguate, and I don't like false reports of packetloss (only reliables loss can be detected, and that's not frequent enough to be meaningful). Pings can still be determined with dpp7, for those few packets which are acked.
package manager: reworked to enable/disable plugins when downloaded, which can also be present-but-disabled.
package manager: display a confirmation prompt before applying changes. do not allow other changes to be made while applying. prompt may be skipped with 'pkg apply' in dedicated servers.
sv: downloads are no longer forced to lower case.
sv: added sv_demoAutoCompress cvar. set to 1 to directly record to *.mvd.gz
cl: properly support directly playing .mvd.gz files
menus: reworked to separate mouse and keyboard focus. mouse focus becomes keyboard focus only on mouse clicks. tooltips follow mouse cursors.
menus: cleaned up menu heirachy a little. now simpler.
server browser: changed 'hide *' filters to 'show *' instead. I felt it was more logical.
deluxmapping: changed to disabled, load, generate, like r_loadlit is.
render targets api now supports negative formats to mean nearest filtering, where filtering is part of texture state.
drawrotpic fixed, now batches and interacts with drawpic correctly.
drawline fixed, no interacts with draw* correctly, but still does not batch.
fixed saving games.
provide proper userinfo to nq clients, where supported.
qcc: catch string table overflows safely, giving errors instead of crashes. switch to 32bit statements if some over-sized function requires it.
qtv: some bigcoords support tweaks
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5073 fc73d0e0-1445-4013-8a0c-d673dee63da5
2017-03-21 05:27:07 +00:00
qboolean haveserverinfo ; //nq servers will usually be false. don't override stuff if we already know better.
2018-07-05 16:21:44 +00:00
infobuf_t serverinfo ;
2021-05-27 11:36:01 +00:00
char * serverpacknames ;
char * serverpackhashes ;
2011-10-27 15:46:36 +00:00
qboolean serverpakschanged ;
2004-08-23 00:15:46 +00:00
int parsecount ; // server message counter
2004-08-27 00:46:32 +00:00
int oldparsecount ;
2004-08-23 00:15:46 +00:00
int oldvalidsequence ;
2013-03-12 22:53:23 +00:00
int ackedmovesequence ; //in quakeworld/q2 this is always equal to validsequence. nq can differ. may only be updated when validsequence is updated.
2013-07-26 17:19:06 +00:00
int lastackedmovesequence ; //can be higher than ackedmovesequence when the received frame was unusable.
2004-08-23 00:15:46 +00:00
int validsequence ; // this is the sequence number of the last good
// packetentity_t we got. If this is 0, we can't
// render a frame yet
2013-07-26 17:19:06 +00:00
int movesequence ; // client->server frames
2017-08-29 02:29:06 +00:00
float movesequence_time ; // client->server frame timestamp (vs cl.time)
2004-08-23 00:15:46 +00:00
2017-05-28 15:42:32 +00:00
// int spectator;
2015-06-14 01:28:01 +00:00
int autotrack_hint ; //the latest hint from the mod, might be negative for invalid.
int autotrack_killer ; //if someone kills the guy we're tracking, this is the guy we should switch to.
2004-08-23 00:15:46 +00:00
double last_ping_request ; // while showing scoreboard
double last_servermessage ;
2013-03-12 22:35:33 +00:00
//list of ent frames that still need to be acked.
2018-11-19 06:37:25 +00:00
unsigned int numackframes ;
2013-03-12 22:35:33 +00:00
int ackframes [ 64 ] ;
2004-08-23 00:15:46 +00:00
# ifdef Q2CLIENT
q2frame_t q2frame ;
q2frame_t q2frames [ Q2UPDATE_BACKUP ] ;
# endif
// sentcmds[cl.netchan.outgoing_sequence & UPDATE_MASK] = cmd
2013-03-12 22:53:23 +00:00
outframe_t outframes [ UPDATE_BACKUP ] ; //user inputs (cl.ackedmovesequence+1 to cl.movesequence are still pending)
inframe_t inframes [ UPDATE_BACKUP ] ; //server state (cl.validsequence is the most recent set)
2005-08-26 22:56:51 +00:00
lerpents_t * lerpents ;
int maxlerpents ; //number of slots allocated.
2012-02-17 01:35:22 +00:00
int lerpentssequence ;
2005-08-26 22:56:51 +00:00
lerpents_t lerpplayers [ MAX_CLIENTS ] ;
2004-08-23 00:15:46 +00:00
2012-07-05 19:42:36 +00:00
//when running splitscreen, we have multiple viewports all active at once
2018-03-25 09:36:14 +00:00
unsigned int splitclients ; //we are running this many clients split screen.
2013-06-23 02:17:02 +00:00
playerview_t playerview [ MAX_SPLITS ] ;
2018-03-25 09:36:14 +00:00
unsigned int defaultnetsplit ; //which multiview splitscreen to parse the message for (set by mvd playback code)
2012-07-05 19:42:36 +00:00
// localized movement vars
float bunnyspeedcap ;
2004-08-23 00:15:46 +00:00
// the client simulates or interpolates movement to get these values
double time ; // this is the time value that the client
2005-07-28 15:33:27 +00:00
// is rendering at. always <= realtime
2018-05-21 13:47:53 +00:00
double lasttime ; //cl.time from last frame.
2019-02-16 19:09:07 +00:00
double lastlinktime ; //cl.time from last frame.
2022-01-28 10:48:14 +00:00
double mapstarttime ; //for computing csqc's cltime.
2005-10-01 03:09:17 +00:00
float servertime ; //current server time, bound between gametime and gametimemark
float mtime ; //server time as on the server when we last received a packet. not allowed to decrease.
float oldmtime ; //server time as on the server for the previously received packet.
2004-08-23 00:15:46 +00:00
float gametime ;
float gametimemark ;
2005-06-04 04:20:20 +00:00
float oldgametime ; //used as the old time to lerp cl.time from.
float oldgametimemark ; //if it's 0, cl.time will casually increase.
2015-08-07 17:49:49 +00:00
float demogametimebias ; //mvd timings are weird.
2018-05-06 16:09:07 +00:00
int demonudge ; //
float demopausedtilltime ; //demo is paused until realtime>this
2004-08-23 00:15:46 +00:00
float minpitch ;
float maxpitch ;
qboolean paused ; // send over by server
2020-02-11 18:06:10 +00:00
qboolean implicitpause ; //for csqc. only a hint, respected only in singleplayer.
2004-08-23 00:15:46 +00:00
2015-09-01 04:45:15 +00:00
enum
{
IM_NONE , //off.
IM_NQSCORES , //+showscores forced, view still attached to regular view
2016-07-12 00:40:13 +00:00
IM_NQFINALE , //slow centerprint text etc, view still attached to regular view. no hud
IM_NQCUTSCENE , //IM_NQFINALE, but without the 'finale' header on centerprints.
IM_H2FINALE , //IM_NQFINALE, but with the view offset by the player's viewheight.
2015-09-01 04:45:15 +00:00
IM_QWSCORES //intermission, view locked at a specific point
} intermissionmode ; // don't change view angle, full screen, etc
2006-04-11 20:09:39 +00:00
float completed_time ; // latched ffrom time at intermission start
2004-08-23 00:15:46 +00:00
//
// information that is static for the entire time connected to a server
//
2019-04-16 22:40:05 +00:00
# ifdef HAVE_LEGACY
2018-09-01 04:18:08 +00:00
char model_name_vwep [ MAX_VWEP_MODELS ] [ MAX_QPATH ] ;
struct model_s * model_precache_vwep [ MAX_VWEP_MODELS ] ;
# endif
char model_name [ MAX_PRECACHE_MODELS ] [ MAX_QPATH ] ;
struct model_s * model_precache [ MAX_PRECACHE_MODELS ] ;
char sound_name [ MAX_PRECACHE_SOUNDS ] [ MAX_QPATH ] ;
struct sfx_s * sound_precache [ MAX_PRECACHE_SOUNDS ] ;
char * particle_ssname [ MAX_SSPARTICLESPRE ] ;
int particle_ssprecache [ MAX_SSPARTICLESPRE ] ; //these are actually 1-based, so 0 can be used to lazy-init them. I cheat.
2015-03-03 00:14:43 +00:00
# ifdef Q2CLIENT
2019-04-07 16:41:09 +00:00
# define Q2MAX_VISIBLE_WEAPONS 32 //q2 has about 20.
int numq2visibleweapons ; //q2 sends out visible-on-model weapons in a wierd gender-nutral way.
char * q2visibleweapons [ Q2MAX_VISIBLE_WEAPONS ] ; //model names beginning with a # are considered 'sexed', and are loaded on a per-client basis. yay. :(
2015-12-28 17:41:39 +00:00
char * configstring_general [ Q2MAX_CLIENTS | Q2MAX_GENERAL ] ;
2015-03-03 00:14:43 +00:00
char * image_name [ Q2MAX_IMAGES ] ;
char * item_name [ Q2MAX_ITEMS ] ;
2016-01-18 05:22:07 +00:00
short inventory [ MAX_SPLITS ] [ Q2MAX_ITEMS ] ;
2015-03-03 00:14:43 +00:00
# endif
2004-08-23 00:15:46 +00:00
2013-03-12 22:44:00 +00:00
char model_csqcname [ MAX_CSMODELS ] [ MAX_QPATH ] ;
struct model_s * model_csqcprecache [ MAX_CSMODELS ] ;
char * particle_csname [ MAX_CSPARTICLESPRE ] ;
int particle_csprecache [ MAX_CSPARTICLESPRE ] ; //these are actually 1-based, so we can be lazy and do a simple negate.
2005-02-12 18:56:04 +00:00
2013-03-12 22:44:00 +00:00
qboolean particle_ssprecaches ; //says to not try to do any dp-compat hacks.
qboolean particle_csprecaches ; //says to not try to do any dp-compat hacks.
2012-07-05 19:42:36 +00:00
2005-10-16 03:51:40 +00:00
//used for q2 sky/configstrings
2004-08-23 00:15:46 +00:00
char skyname [ MAX_QPATH ] ;
2005-10-16 03:51:40 +00:00
float skyrotate ;
vec3_t skyaxis ;
2019-10-18 08:37:38 +00:00
qboolean fog_locked ; //FIXME: make bitmask
fogstate_t fog [ FOGTYPE_COUNT ] ; //0 = air, 1 = water. if water has no density fall back on air.
fogstate_t oldfog [ FOGTYPE_COUNT ] ;
2011-03-31 02:32:32 +00:00
2004-08-23 00:15:46 +00:00
char levelname [ 40 ] ; // for display on solo scoreboard
2016-07-12 00:40:13 +00:00
char * windowtitle ; // fully overrides the window caption.
2004-08-23 00:15:46 +00:00
// refresh related state
struct model_s * worldmodel ; // cl_entitites[0].model
int num_entities ; // stored bottom up in cl_entities array
int num_statics ; // stored top down in cl_entitiers
// all player information
2011-04-25 03:25:22 +00:00
unsigned int allocated_client_slots ;
2004-08-23 00:15:46 +00:00
player_info_t players [ MAX_CLIENTS ] ;
downloadlist_t * downloadlist ;
downloadlist_t * faileddownloads ;
qboolean gamedirchanged ;
2016-01-18 05:22:07 +00:00
# ifdef Q2CLIENT
2018-07-05 16:21:44 +00:00
char q2airaccel [ 16 ] ;
2004-08-23 00:15:46 +00:00
char q2statusbar [ 1024 ] ;
2016-01-18 05:22:07 +00:00
char q2layout [ MAX_SPLITS ] [ 1024 ] ;
2020-03-28 01:46:25 +00:00
int q2mapchecksum ;
2004-08-23 00:15:46 +00:00
int parse_entities ;
float lerpfrac ;
2016-10-22 07:06:51 +00:00
float q2svnetrate ; //number of frames we expect to receive per second (required to calculate the server time correctly).
2016-01-18 05:22:07 +00:00
# endif
char lastcenterprint [ 1024 ] ; //prevents too much spam with console centerprint logging.
2004-08-23 00:15:46 +00:00
2015-08-07 17:49:49 +00:00
struct itemtimer_s
{
float end ;
int entnum ;
float start ;
float duration ;
vec3_t origin ;
2017-05-18 10:24:09 +00:00
vec3_t rgb ;
2015-08-07 17:49:49 +00:00
float radius ;
struct itemtimer_s * next ;
} * itemtimers ;
2013-07-26 17:19:06 +00:00
//interpolation+snapshots
float packfrac ;
2011-12-05 15:23:40 +00:00
packet_entities_t * currentpackentities ;
2013-07-26 17:19:06 +00:00
packet_entities_t * previouspackentities ;
2011-12-05 15:23:40 +00:00
float currentpacktime ;
2013-07-26 17:19:06 +00:00
qboolean do_lerp_players ;
2011-12-05 15:23:40 +00:00
2004-08-23 00:15:46 +00:00
int teamplay ;
int deathmatch ;
2004-12-29 03:24:21 +00:00
2012-10-10 22:58:51 +00:00
qboolean teamfortress ; // *sigh*. This is used for teamplay stuff. This sucks.
2008-06-01 22:06:22 +00:00
qboolean hexen2pickups ;
2006-01-04 00:44:34 +00:00
qboolean sendprespawn ;
int contentstage ;
2006-03-06 01:41:09 +00:00
2015-06-14 01:28:01 +00:00
double matchgametimestart ;
2006-03-06 01:41:09 +00:00
enum {
2015-06-24 17:59:57 +00:00
MATCH_DONTKNOW , //assumed to be in progress.
2010-11-21 03:39:12 +00:00
MATCH_COUNTDOWN ,
MATCH_STANDBY ,
MATCH_INPROGRESS
} matchstate ;
2017-01-24 10:27:39 +00:00
enum {
CLNQPP_NONE ,
CLNQPP_PINGS ,
CLNQPP_STATUS , //"host: *\n" ... "players: *\n\n"
CLNQPP_STATUSPLAYER , //#...\n
CLNQPP_STATUSPLAYERIP , // foobar\n
} nqparseprint ;
int nqparseprintplayer ;
float nqplayernamechanged ;
2004-08-23 00:15:46 +00:00
} client_state_t ;
2008-06-01 22:06:22 +00:00
extern unsigned int cl_teamtopcolor ;
extern unsigned int cl_teambottomcolor ;
extern unsigned int cl_enemytopcolor ;
extern unsigned int cl_enemybottomcolor ;
2004-09-26 00:30:42 +00:00
//FPD values
//(commented out ones are ones that we don't support)
2017-12-28 16:24:50 +00:00
//#define FPD_NO_SAY_MACROS (1 << 0)
//#define FPD_NO_TIMERS (1 << 1)
//#define FPD_NO_SOUNDTRIGGERS (1 << 2)
# define FPD_NO_FAKE_LAG (1 << 3)
# define FPD_ANOUNCE_FAKE_LAG (1 << 4)
//#define FPD_HIDE_ENEMY_VICINITY (1 << 5)
//#define FPD_NO_SPEC_CHAT (1 << 6)
//#define FPD_HIDE_X_Y_MACRO (1 << 7)
# define FPD_NO_FORCE_SKIN (1 << 8)
# define FPD_NO_FORCE_COLOR (1 << 9)
# define FPD_LIMIT_PITCH (1 << 14) //limit scripted pitch changes
# define FPD_LIMIT_YAW (1 << 15) //limit scripted yaw changes
2004-08-23 00:15:46 +00:00
//
// cvars
//
extern cvar_t cl_warncmd ;
extern cvar_t cl_upspeed ;
extern cvar_t cl_forwardspeed ;
extern cvar_t cl_backspeed ;
extern cvar_t cl_sidespeed ;
extern cvar_t cl_movespeedkey ;
extern cvar_t cl_yawspeed ;
extern cvar_t cl_pitchspeed ;
extern cvar_t cl_anglespeedkey ;
extern cvar_t cl_shownet ;
extern cvar_t cl_sbar ;
extern cvar_t cl_hudswap ;
extern cvar_t cl_pitchdriftspeed ;
extern cvar_t lookspring ;
extern cvar_t lookstrafe ;
extern cvar_t sensitivity ;
extern cvar_t m_pitch ;
extern cvar_t m_yaw ;
extern cvar_t m_forward ;
extern cvar_t m_side ;
2014-10-05 20:04:11 +00:00
# ifndef SERVERONLY
2004-08-23 00:15:46 +00:00
extern cvar_t name ;
2014-10-05 20:04:11 +00:00
# endif
2004-08-23 00:15:46 +00:00
2007-08-23 21:25:18 +00:00
extern cvar_t ruleset_allow_playercount ;
extern cvar_t ruleset_allow_frj ;
extern cvar_t ruleset_allow_semicheats ;
extern cvar_t ruleset_allow_packet ;
extern cvar_t ruleset_allow_particle_lightning ;
extern cvar_t ruleset_allow_overlongsounds ;
extern cvar_t ruleset_allow_larger_models ;
2008-02-01 15:21:14 +00:00
extern cvar_t ruleset_allow_modified_eyes ;
2014-03-30 08:55:06 +00:00
extern cvar_t ruleset_allow_sensitive_texture_replacements ;
2008-06-08 14:37:57 +00:00
extern cvar_t ruleset_allow_localvolume ;
2009-11-04 21:16:50 +00:00
extern cvar_t ruleset_allow_shaders ;
2016-07-12 00:40:13 +00:00
extern cvar_t ruleset_allow_watervis ;
2021-04-14 05:21:04 +00:00
extern cvar_t ruleset_allow_triggers ;
2007-08-23 21:25:18 +00:00
2013-03-31 04:21:08 +00:00
# ifndef SERVERONLY
2004-08-23 00:15:46 +00:00
extern client_state_t cl ;
2013-03-31 04:21:08 +00:00
# endif
2004-08-23 00:15:46 +00:00
2010-07-11 02:22:39 +00:00
typedef struct
{
entity_t ent ;
2014-10-05 20:04:11 +00:00
entity_state_t state ;
2021-08-23 22:14:34 +00:00
trailkey_t emit ;
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
int mdlidx ; /*negative are csqc indexes*/
2010-07-11 02:22:39 +00:00
} static_entity_t ;
2004-08-23 00:15:46 +00:00
// FIXME, allocate dynamically
2006-07-24 04:24:41 +00:00
extern entity_state_t * cl_baselines ;
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
extern static_entity_t * cl_static_entities ;
2016-07-12 00:40:13 +00:00
extern unsigned int cl_max_static_entities ;
2019-09-10 15:40:04 +00:00
extern lightstyle_t * cl_lightstyle ;
extern size_t cl_max_lightstyles ;
2009-11-04 21:16:50 +00:00
extern dlight_t * cl_dlights ;
2018-11-19 06:37:25 +00:00
extern size_t cl_maxdlights ;
2004-08-23 00:15:46 +00:00
2019-09-10 15:40:04 +00:00
extern int d_lightstylevalue [ MAX_NET_LIGHTSTYLES ] ;
2018-11-19 06:37:25 +00:00
extern size_t rtlights_first , rtlights_max ;
2006-07-24 04:24:41 +00:00
extern int cl_baselines_count ;
2006-05-11 03:14:41 +00:00
2004-08-23 00:15:46 +00:00
extern qboolean nomaster ;
//=============================================================================
//
// cl_main
//
2009-11-04 21:16:50 +00:00
void CL_InitDlights ( void ) ;
2010-07-13 09:49:38 +00:00
void CL_FreeDlights ( void ) ;
2022-03-08 05:31:34 +00:00
dlight_t * CL_AllocDlight ( int key ) ; //allocates or reuses the light with the specified key index
dlight_t * CL_AllocDlightOrg ( int keyidx , vec3_t keyorg ) ; //reuses the light at the specified origin...
dlight_t * CL_AllocSlight ( void ) ; //allocates a new static light
2011-12-27 08:35:19 +00:00
dlight_t * CL_NewDlight ( int key , const vec3_t origin , float radius , float time , float r , float g , float b ) ;
2009-11-04 21:16:50 +00:00
dlight_t * CL_NewDlightCube ( int key , const vec3_t origin , vec3_t angles , float radius , float time , vec3_t colours ) ;
2018-11-19 06:37:25 +00:00
void CL_CloneDlight ( dlight_t * dl , dlight_t * src ) ; //copies one light to another safely
2004-08-23 00:15:46 +00:00
void CL_DecayLights ( void ) ;
2009-11-04 21:16:50 +00:00
2016-07-12 00:40:13 +00:00
void CLQW_ParseDelta ( struct entity_state_s * from , struct entity_state_s * to , int bits ) ;
2004-08-23 00:15:46 +00:00
void CL_Init ( void ) ;
void Host_WriteConfiguration ( void ) ;
void CL_CheckServerInfo ( void ) ;
2011-12-05 15:23:40 +00:00
void CL_CheckServerPacks ( void ) ;
2004-08-23 00:15:46 +00:00
void CL_EstablishConnection ( char * host ) ;
2018-12-06 04:55:35 +00:00
void CL_Disconnect ( const char * reason ) ;
2004-08-23 00:15:46 +00:00
void CL_Disconnect_f ( void ) ;
2006-02-11 14:51:36 +00:00
void CL_Reconnect_f ( void ) ;
2004-08-23 00:15:46 +00:00
void CL_NextDemo ( void ) ;
2007-08-06 21:13:15 +00:00
void CL_Startdemos_f ( void ) ;
void CL_Demos_f ( void ) ;
void CL_Stopdemo_f ( void ) ;
void CL_Changing_f ( void ) ;
void CL_Reconnect_f ( void ) ;
void CL_ConnectionlessPacket ( void ) ;
2004-08-23 00:15:46 +00:00
qboolean CL_DemoBehind ( void ) ;
2006-02-11 14:51:36 +00:00
void CL_SaveInfo ( vfsfile_t * f ) ;
2018-07-05 16:21:44 +00:00
void CL_SetInfo ( int pnum , const char * key , const char * value ) ;
2019-06-17 04:21:41 +00:00
void CL_SetInfoBlob ( int pnum , const char * key , const char * value , size_t valuesize ) ;
2004-08-23 00:15:46 +00:00
2009-11-04 21:16:50 +00:00
char * CL_TryingToConnect ( void ) ;
2004-08-23 00:15:46 +00:00
2013-06-23 02:17:02 +00:00
void CL_ExecInitialConfigs ( char * defaultexec ) ;
2012-11-27 03:23:19 +00:00
2015-03-03 07:54:10 +00:00
extern int cl_framecount ; //number of times the entity lists have been cleared+reset.
2011-04-30 17:21:10 +00:00
extern int cl_numvisedicts ;
------------------------------------------------------------------------
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
extern int cl_maxvisedicts ;
extern entity_t * cl_visedicts ;
2004-08-23 00:15:46 +00:00
2009-11-04 21:16:50 +00:00
/*these are for q3 really*/
typedef struct {
struct shader_s * shader ;
int firstvert ;
int firstidx ;
int numvert ;
int numidx ;
------------------------------------------------------------------------
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
unsigned int flags ;
2009-11-04 21:16:50 +00:00
} scenetris_t ;
extern scenetris_t * cl_stris ;
2015-03-03 00:14:43 +00:00
extern vecV_t * fte_restrict cl_strisvertv ;
extern vec4_t * fte_restrict cl_strisvertc ;
extern vec2_t * fte_restrict cl_strisvertt ;
2019-02-19 06:49:03 +00:00
extern vec3_t * fte_restrict cl_strisvertn [ 3 ] ;
2015-03-03 00:14:43 +00:00
extern index_t * fte_restrict cl_strisidx ;
2009-11-04 21:16:50 +00:00
extern unsigned int cl_numstrisidx ;
extern unsigned int cl_maxstrisidx ;
extern unsigned int cl_numstrisvert ;
extern unsigned int cl_maxstrisvert ;
2019-02-19 06:49:03 +00:00
extern unsigned int cl_numstrisnormals ;
extern unsigned int cl_maxstrisnormals ;
2009-11-04 21:16:50 +00:00
extern unsigned int cl_numstris ;
extern unsigned int cl_maxstris ;
2019-02-19 06:49:03 +00:00
# define cl_stris_ExpandVerts(max) \
do { \
cl_maxstrisvert = max ; \
cl_strisvertv = BZ_Realloc ( cl_strisvertv , sizeof ( * cl_strisvertv ) * cl_maxstrisvert ) ; \
cl_strisvertt = BZ_Realloc ( cl_strisvertt , sizeof ( * cl_strisvertt ) * cl_maxstrisvert ) ; \
cl_strisvertc = BZ_Realloc ( cl_strisvertc , sizeof ( * cl_strisvertc ) * cl_maxstrisvert ) ; \
/* cl_strisvertn[0] = BZ_Realloc(cl_strisvertn[0], sizeof(*cl_strisvertn[0])*cl_maxstrisvert); \
cl_strisvertn [ 1 ] = BZ_Realloc ( cl_strisvertn [ 1 ] , sizeof ( * cl_strisvertn [ 1 ] ) * cl_maxstrisvert ) ; \
cl_strisvertn [ 2 ] = BZ_Realloc ( cl_strisvertn [ 2 ] , sizeof ( * cl_strisvertn [ 2 ] ) * cl_maxstrisvert ) ; \
*/ } while ( 0 )
2004-08-23 00:15:46 +00:00
extern char emodel_name [ ] , pmodel_name [ ] , prespawn_name [ ] , modellist_name [ ] , soundlist_name [ ] ;
2016-07-12 00:40:13 +00:00
//CL_TraceLine traces against network(positive)+csqc(negative) ents. returns frac(1 on failure), and impact, normal, ent values
float CL_TraceLine ( vec3_t start , vec3_t end , vec3_t impact , vec3_t normal , int * ent ) ;
2022-03-08 05:31:34 +00:00
entity_t * TraceLineR ( vec3_t start , vec3_t end , vec3_t impact , vec3_t normal , qboolean bsponly ) ;
2006-02-11 14:51:36 +00:00
2004-08-23 00:15:46 +00:00
//
// cl_input
//
2017-12-09 21:22:46 +00:00
typedef struct kbutton_s
2004-08-23 00:15:46 +00:00
{
int down [ MAX_SPLITS ] [ 2 ] ; // key nums holding it down
int state [ MAX_SPLITS ] ; // low bit is down state
2017-12-09 21:22:46 +00:00
struct kbutton_s * suppressed [ MAX_SPLITS ] ; //the button that was suppressed by this one getting pressed
2004-08-23 00:15:46 +00:00
} kbutton_t ;
2017-12-02 22:11:20 +00:00
extern kbutton_t in_mlook ;
2004-08-23 00:15:46 +00:00
extern kbutton_t in_strafe ;
extern kbutton_t in_speed ;
2005-02-28 07:16:19 +00:00
extern float in_sensitivityscale ;
2005-10-07 02:06:33 +00:00
void CL_MakeActive ( char * gamename ) ;
2012-09-30 05:52:03 +00:00
void CL_UpdateWindowTitle ( void ) ;
2005-10-07 02:06:33 +00:00
2018-12-06 04:55:35 +00:00
# ifdef QUAKESTATS
const char * IN_GetPreselectedViewmodelName ( unsigned int pnum ) ;
2022-06-19 15:18:08 +00:00
qboolean IN_WeaponWheelAccumulate ( int pnum , float x , float y ) ;
qboolean IN_DrawWeaponWheel ( int pnum ) ;
2018-12-06 04:55:35 +00:00
# endif
2004-08-23 00:15:46 +00:00
void CL_InitInput ( void ) ;
2009-05-24 10:11:17 +00:00
void CL_SendCmd ( double frametime , qboolean mainloop ) ;
2004-08-23 00:15:46 +00:00
void CL_SendMove ( usercmd_t * cmd ) ;
# ifdef NQPROT
void CL_ParseTEnt ( qboolean nqprot ) ;
# else
void CL_ParseTEnt ( void ) ;
# endif
2020-09-08 05:11:09 +00:00
void CL_ParseTEnt_Sized ( void ) ;
2004-08-23 00:15:46 +00:00
void CL_UpdateTEnts ( void ) ;
2015-07-14 14:47:00 +00:00
enum beamtype_e
{ //these are internal ids, matching the beam table
BT_Q1LIGHTNING1 ,
BT_Q1LIGHTNING2 ,
BT_Q1LIGHTNING3 ,
BT_Q1BEAM ,
BT_Q2PARASITE ,
BT_Q2GRAPPLE ,
BT_Q2HEATBEAM ,
2015-12-12 19:25:15 +00:00
BT_Q2LIGHTNING ,
2015-07-14 14:47:00 +00:00
BT_H2LIGHTNING_SMALL ,
BT_H2CHAIN ,
BT_H2SUNSTAFF1 ,
BT_H2SUNSTAFF1_SUB , //inner beam hack
BT_H2SUNSTAFF2 , //same model as 1, but different particle effect
BT_H2LIGHTNING ,
BT_H2COLORBEAM ,
BT_H2ICECHUNKS ,
BT_H2GAZE ,
BT_H2FAMINE ,
} ;
2015-12-12 19:25:15 +00:00
typedef struct beam_s beam_t ;
beam_t * CL_AddBeam ( enum beamtype_e tent , int ent , vec3_t start , vec3_t end ) ;
2004-08-23 00:15:46 +00:00
2018-09-23 19:35:24 +00:00
void CL_ClearState ( qboolean gamestart ) ;
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
void CLQ2_ClearState ( void ) ;
2004-08-23 00:15:46 +00:00
void CL_ReadPackets ( void ) ;
2020-02-26 00:37:52 +00:00
void CL_ReadPacket ( void ) ;
2004-08-23 00:15:46 +00:00
int CL_ReadFromServer ( void ) ;
void CL_WriteToServer ( usercmd_t * cmd ) ;
2015-07-07 02:03:31 +00:00
int Master_FindBestRoute ( char * server , char * out , size_t outsize , int * directcost , int * chainedcost ) ;
2004-08-23 00:15:46 +00:00
2014-04-13 04:23:13 +00:00
float CL_KeyState ( kbutton_t * key , int pnum , qboolean noslowstart ) ;
2018-07-05 16:21:44 +00:00
const char * Key_KeynumToString ( int keynum , int modifier ) ;
2022-05-28 17:59:01 +00:00
const char * Key_KeynumToLocalString ( int keynum , int modifier ) ;
2014-03-30 08:55:06 +00:00
int Key_StringToKeynum ( const char * str , int * modifier ) ;
2019-09-04 07:59:40 +00:00
const char * Key_GetBinding ( int keynum , int bindmap , int modifier ) ;
Reworked client support for DPP5+. less code now, its much more graceful.
added waterfog command. waterfog overrides regular fog only when the view is in water.
fixed 64bit printf format specifiers. should work better on winxp64.
fixed some spec angle weirdness.
fixed viewsize 99.99 weirdness with ezhud.
fixed extra offset on the console (exhibited in 64bit builds, but not limited to).
fixed .avi playback, can now actually display frames again.
reimplemented line sparks.
fixed r_editlights_save flipping the light's pitch.
fixed issue with oggs failing to load.
fixed condump to cope with unicode properly.
made sv_bigcoords default except in quake. hexen2 kinda needs it for bsp angle precision.
fixed nq server to not stall weirdly on map changes.
fixed qwprogs svc_cdtrack not bugging out with nq clients on the server.
fixed restart command to load the last map run by the server, instead of start.bsp (when idle)
optimised d3d9 renderer a little. now uses less draw calls, especially with complex scenes. seems to get higher framerates than opengl now.
fixed d3d9 renderer to not bug out quite so much when run fullscreen (shader subsystem is now correctly initialised).
fixed a couple of bugs from font change. also now supports utf-8 in a few more places.
r_editlights_reload no longer generates rtlights inside the void. this resolves a few glitches (but should also help framerates a little).
fixed so corona-only lights won't generate shadowmaps and waste lots of time.
removed lots of #defines from qclib. I should never have made them in the first place, but I was lazy. obviously there's more left that I cba to remove yet.
fixed nested calls with variant-vectors. this fixes csaddon's light editor.
fixed qcc hc calling conventions using redundant stores.
disabled keywords can still be used by using __keyword instead.
fixed ftegccgui grep feature.
fixed motionless-dog qcc bug.
tweaked qcc warnings a little. -Wall is now a viable setting. you should be able to fix all those warnings.
fixed qw svc_intermission + dpp5+ clients bug.
fixed annoying spam about disconnecting in hexen2.
rewrote status command a little to cope with ipv6 addresses more gracefully
fixed significant stall when hibernating/debugging a server with a player sitting on it.
fixed truelightning.
fixed rocketlight overriding pflags.
fixed torches vanishing on vid_restart.
fixed issue with decal scaling.
fixed findentityfield builtin.
fixed fteqcc issue with ptr+1
fixed use of arrays inside class functions.
fixed/implemented fteqcc emulation of pointer opcodes.
added __inout keyword to fteqcc, so that it doesn't feel so horrendous.
fixed sizeof(*foo)
fixed *struct = struct;
fixed recursive structs.
fixed fteqcc warning report.
fixed sdl2 controller support, hopefully.
attempted to implement xinput, including per-player audio playback.
slightly fixed relaxed attitude to mouse focus when running fullscreen.
fixed weird warnings/errors with 'ent.arrayhead' terms. now generates sane errors.
implemented bindmaps (for csqc).
fixed crashing bug with eprint builtin.
implemented subset of music_playlist_* functionality. significant changes to music playback.
fixed some more dpcsqc compat.
fixed binds menu. now displays and accepts modifiers.
fixed issues with huge lightmaps.
fixed protocol determinism with dp clients connecting to fte servers. the initial getchallenge request now inhibits vanilla nq connection requests.
implemented support for 'dupe' userinfo key, allowing clients to request client->server packet duplication. should probably queue them tbh.
implemented sv_saveentfile command.
fixed resume after breaking inside a stepped-over function.
fixed erroneous footer after debugging.
(I wonder just how many things I broke with these fixes)
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4946 fc73d0e0-1445-4013-8a0c-d673dee63da5
2015-07-26 10:56:18 +00:00
void Key_GetBindMap ( int * bindmaps ) ;
void Key_SetBindMap ( int * bindmaps ) ;
2004-08-23 00:15:46 +00:00
2006-02-11 14:51:36 +00:00
void CL_UseIndepPhysics ( qboolean allow ) ;
2017-10-31 22:52:58 +00:00
extern qboolean runningindepphys ;
qboolean CL_AllowIndependantSendCmd ( qboolean allow ) ; //returns previous state.
2006-02-11 14:51:36 +00:00
void CL_FlushClientCommands ( void ) ;
2009-11-04 21:16:50 +00:00
void VARGS CL_SendClientCommand ( qboolean reliable , char * format , . . . ) LIKEPRINTF ( 2 ) ;
2021-07-17 15:10:10 +00:00
void VARGS CL_SendSeatClientCommand ( qboolean reliable , unsigned int seat , char * format , . . . ) LIKEPRINTF ( 3 ) ;
2017-08-29 02:29:06 +00:00
float CL_FilterTime ( double time , float wantfps , float limit , qboolean ignoreserver ) ;
2006-02-11 14:51:36 +00:00
int CL_RemoveClientCommands ( char * command ) ;
2005-02-28 07:16:19 +00:00
2004-08-23 00:15:46 +00:00
//
// cl_demo.c
//
void CL_StopPlayback ( void ) ;
2020-02-26 00:37:52 +00:00
qboolean CL_GetDemoMessage ( void ) ;
2004-08-23 00:15:46 +00:00
void CL_WriteDemoCmd ( usercmd_t * pcmd ) ;
2009-11-04 21:16:50 +00:00
void CL_Demo_ClientCommand ( char * commandtext ) ; //for QTV.
2004-08-23 00:15:46 +00:00
2016-07-12 00:40:13 +00:00
void CL_WriteSetDemoMessage ( void ) ; //'restarts' a qwd, when we have reloads/map changes in them
2016-01-18 05:22:07 +00:00
void CL_WriteRecordQ2DemoMessage ( sizebuf_t * msg ) ;
2004-08-23 00:15:46 +00:00
void CL_Stop_f ( void ) ;
void CL_Record_f ( void ) ;
void CL_ReRecord_f ( void ) ;
2017-08-14 16:38:44 +00:00
void CL_DemoList_c ( int argn , const char * partial , struct xcommandargcompletioncb_s * ctx ) ;
2004-08-23 00:15:46 +00:00
void CL_PlayDemo_f ( void ) ;
2006-03-14 01:25:46 +00:00
void CL_QTVPlay_f ( void ) ;
2007-08-06 21:13:15 +00:00
void CL_QTVPoll ( void ) ;
2006-09-17 00:59:22 +00:00
void CL_QTVList_f ( void ) ;
2007-05-25 22:16:29 +00:00
void CL_QTVDemos_f ( void ) ;
2005-12-21 03:07:33 +00:00
void CL_DemoJump_f ( void ) ;
2018-05-06 16:09:07 +00:00
void CL_DemoNudge_f ( void ) ;
2006-02-11 14:51:36 +00:00
void CL_ProgressDemoTime ( void ) ;
2004-08-23 00:15:46 +00:00
void CL_TimeDemo_f ( void ) ;
2009-04-01 22:03:56 +00:00
typedef struct
{
enum
{
QTVCT_NONE ,
QTVCT_STREAM ,
QTVCT_CONNECT ,
QTVCT_JOIN ,
QTVCT_OBSERVE ,
2009-04-07 01:26:47 +00:00
QTVCT_MAP
2009-04-01 22:03:56 +00:00
} connectiontype ;
enum
{
QTVCT_NETQUAKE ,
QTVCT_QUAKEWORLD ,
QTVCT_QUAKE2 ,
QTVCT_QUAKE3
} protocol ;
char server [ 256 ] ;
char splashscreen [ 256 ] ;
//char *datafiles;
} qtvfile_t ;
void CL_ParseQTVFile ( vfsfile_t * f , const char * fname , qtvfile_t * result ) ;
2004-08-23 00:15:46 +00:00
//
// cl_parse.c
//
# define NET_TIMINGS 256
# define NET_TIMINGSMASK 255
2019-01-13 16:51:50 +00:00
extern float packet_latency [ NET_TIMINGS ] ;
2014-03-30 08:55:06 +00:00
int CL_CalcNet ( float scale ) ;
2015-06-12 14:44:50 +00:00
void CL_CalcNet2 ( float * pings , float * pings_min , float * pings_max , float * pingms_stddev , float * pingfr , int * pingfr_min , int * pingfr_max , float * dropped , float * choked , float * invalid ) ;
2009-11-04 21:16:50 +00:00
void CL_ClearParseState ( void ) ;
2012-07-05 19:42:36 +00:00
void CL_Parse_Disconnected ( void ) ;
2006-02-28 00:46:04 +00:00
void CL_DumpPacket ( void ) ;
2008-12-03 02:42:05 +00:00
void CL_ParseEstablished ( void ) ;
2011-09-03 03:49:43 +00:00
void CLQW_ParseServerMessage ( void ) ;
2004-08-23 00:15:46 +00:00
void CLNQ_ParseServerMessage ( void ) ;
# ifdef Q2CLIENT
void CLQ2_ParseServerMessage ( void ) ;
# endif
2019-01-29 07:18:07 +00:00
void CL_ShowTrafficUsage ( float x , float y ) ;
2004-08-23 00:15:46 +00:00
void CL_NewTranslation ( int slot ) ;
2009-11-04 21:16:50 +00:00
2014-03-30 08:55:06 +00:00
int CL_IsDownloading ( const char * localname ) ;
2018-09-01 06:05:51 +00:00
qboolean CL_CheckDLFile ( const char * filename ) ;
2014-03-30 08:55:06 +00:00
qboolean CL_CheckOrEnqueDownloadFile ( const char * filename , const char * localname , unsigned int flags ) ;
qboolean CL_EnqueDownload ( const char * filename , const char * localname , unsigned int flags ) ;
2019-07-29 05:28:20 +00:00
downloadlist_t * CL_DownloadFailed ( const char * name , qdownload_t * qdl , enum dlfailreason_e failreason ) ;
2009-11-04 21:16:50 +00:00
int CL_DownloadRate ( void ) ;
2014-06-12 23:08:42 +00:00
void CL_GetDownloadSizes ( unsigned int * filecount , qofs_t * totalsize , qboolean * somesizesunknown ) ;
2009-11-04 21:16:50 +00:00
qboolean CL_ParseOOBDownload ( void ) ;
2014-06-12 23:08:42 +00:00
void CL_DownloadFinished ( qdownload_t * dl ) ;
2009-11-04 21:16:50 +00:00
void CL_RequestNextDownload ( void ) ;
void CL_SendDownloadReq ( sizebuf_t * msg ) ;
2014-03-30 08:55:06 +00:00
void Sound_CheckDownload ( const char * s ) ; /*checkorenqueue a sound file*/
2009-11-04 21:16:50 +00:00
2004-08-23 00:15:46 +00:00
qboolean CL_IsUploading ( void ) ;
void CL_NextUpload ( void ) ;
void CL_StartUpload ( qbyte * data , int size ) ;
void CL_StopUpload ( void ) ;
2007-08-06 21:13:15 +00:00
qboolean CL_CheckBaselines ( int size ) ;
2004-08-23 00:15:46 +00:00
//
// view.c
//
2013-06-23 02:17:02 +00:00
void V_StartPitchDrift ( playerview_t * pv ) ;
void V_StopPitchDrift ( playerview_t * pv ) ;
2004-08-23 00:15:46 +00:00
2018-11-19 06:37:25 +00:00
void V_RenderView ( qboolean no2d ) ;
2004-08-23 00:15:46 +00:00
void V_Register ( void ) ;
2013-06-23 02:17:02 +00:00
void V_ParseDamage ( playerview_t * pv ) ;
2004-08-23 00:15:46 +00:00
void V_SetContentsColor ( int contents ) ;
2006-02-11 14:51:36 +00:00
//used directly by csqc
2013-06-23 02:17:02 +00:00
void V_CalcRefdef ( playerview_t * pv ) ;
void V_ClearRefdef ( playerview_t * pv ) ;
void V_ApplyRefdef ( void ) ;
void V_CalcGunPositionAngle ( playerview_t * pv , float bob ) ;
float V_CalcBob ( playerview_t * pv , qboolean queryold ) ;
void DropPunchAngle ( playerview_t * pv ) ;
2006-02-11 14:51:36 +00:00
2016-07-12 00:40:13 +00:00
int V_EditExternalModels ( int newviewentity , entity_t * viewentities , int maxviewenties ) ;
void V_DepthSortEntities ( float * vieworg ) ;
2004-08-23 00:15:46 +00:00
//
// cl_tent
//
2008-11-09 22:29:28 +00:00
void CL_RegisterParticles ( void ) ;
2004-08-23 00:15:46 +00:00
void CL_InitTEnts ( void ) ;
2012-05-14 01:41:08 +00:00
void CL_InitTEntSounds ( void ) ;
2004-08-23 00:15:46 +00:00
void CL_ClearTEnts ( void ) ;
2011-06-18 12:25:36 +00:00
void CL_ClearTEntParticleState ( void ) ;
2004-08-23 00:15:46 +00:00
void CL_ClearCustomTEnts ( void ) ;
void CL_ParseCustomTEnt ( void ) ;
2016-07-12 00:40:13 +00:00
qboolean CL_WriteCustomTEnt ( sizebuf_t * buf , int id ) ;
2004-11-23 01:10:10 +00:00
void CL_ParseEffect ( qboolean effect2 ) ;
2004-08-23 00:15:46 +00:00
2005-03-10 03:55:18 +00:00
void CLNQ_ParseParticleEffect ( void ) ;
void CL_ParseParticleEffect2 ( void ) ;
void CL_ParseParticleEffect3 ( void ) ;
void CL_ParseParticleEffect4 ( void ) ;
2012-07-05 19:42:36 +00:00
int CL_TranslateParticleFromServer ( int sveffect ) ;
void CL_ParseTrailParticles ( void ) ;
void CL_ParsePointParticles ( qboolean compact ) ;
2016-07-12 00:40:13 +00:00
void CL_SpawnSpriteEffect ( vec3_t org , vec3_t dir , vec3_t orientationup , struct model_s * model , int startframe , int framecount , float framerate , float alpha , float scale , float randspin , float gravity , int traileffect , unsigned int renderflags , int skinnum ) ; /*called from the particlesystem*/
2008-11-09 22:29:28 +00:00
2004-08-23 00:15:46 +00:00
//
// cl_ents.c
//
2012-02-12 05:18:31 +00:00
void CL_SetSolidPlayers ( void ) ;
2004-08-23 00:15:46 +00:00
void CL_SetUpPlayerPrediction ( qboolean dopred ) ;
2019-07-02 04:12:20 +00:00
void CL_LinkStaticEntities ( void * pvs , int * areas ) ;
2011-12-05 15:23:40 +00:00
void CL_TransitionEntities ( void ) ; /*call at the start of the frame*/
2004-08-23 00:15:46 +00:00
void CL_EmitEntities ( void ) ;
void CL_ClearProjectiles ( void ) ;
2004-12-08 04:14:52 +00:00
void CL_ParseProjectiles ( int modelindex , qboolean nails2 ) ;
------------------------------------------------------------------------
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
void CLQW_ParsePacketEntities ( qboolean delta ) ;
2012-02-12 05:18:31 +00:00
void CLFTE_ParseEntities ( void ) ;
2012-07-05 19:42:36 +00:00
void CLFTE_ParseBaseline ( entity_state_t * es , qboolean numberisimportant ) ;
2004-08-23 00:15:46 +00:00
void CL_SetSolidEntities ( void ) ;
2017-12-28 16:24:50 +00:00
void CLQW_ParsePlayerinfo ( void ) ;
2004-08-23 00:15:46 +00:00
void CL_ParseClientPersist ( void ) ;
2005-02-12 18:56:04 +00:00
//these last ones are needed for csqc handling of engine-bound ents.
------------------------------------------------------------------------
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
void CL_ClearEntityLists ( void ) ;
void CL_FreeVisEdicts ( void ) ;
2005-02-12 18:56:04 +00:00
void CL_LinkViewModel ( void ) ;
void CL_LinkPlayers ( void ) ;
void CL_LinkPacketEntities ( void ) ;
void CL_LinkProjectiles ( void ) ;
2011-06-18 12:25:36 +00:00
void CL_ClearLerpEntsParticleState ( void ) ;
2008-12-03 02:42:05 +00:00
qboolean CL_MayLerp ( void ) ;
2005-02-12 18:56:04 +00:00
//
//pr_csqc.c
//
# ifdef CSQC_DAT
2011-09-03 03:49:43 +00:00
qboolean CSQC_Inited ( void ) ;
2016-12-07 18:45:25 +00:00
void CSQC_RendererRestarted ( void ) ;
2013-03-12 22:53:23 +00:00
qboolean CSQC_UnconnectedOkay ( qboolean inprinciple ) ;
qboolean CSQC_UnconnectedInit ( void ) ;
2018-09-23 19:35:24 +00:00
qboolean CSQC_CheckDownload ( const char * name , unsigned int checksum , size_t checksize ) ; //reports whether we already have a usable csprogs.dat
qboolean CSQC_Init ( qboolean anycsqc , const char * csprogsname , unsigned int checksum , size_t progssize ) ;
2012-10-13 00:56:31 +00:00
qboolean CSQC_ConsoleLink ( char * text , char * info ) ;
2016-12-07 18:45:25 +00:00
void CSQC_RegisterCvarsAndThings ( void ) ;
2013-12-29 22:48:28 +00:00
qboolean CSQC_SetupToRenderPortal ( int entnum ) ;
2005-02-12 18:56:04 +00:00
qboolean CSQC_DrawView ( void ) ;
2018-01-22 19:18:04 +00:00
qboolean CSQC_DrawHud ( playerview_t * pv ) ;
qboolean CSQC_DrawScores ( playerview_t * pv ) ;
2014-12-11 16:26:26 +00:00
qboolean CSQC_UseGamecodeLoadingScreen ( void ) ;
2016-12-07 18:45:25 +00:00
void CSQC_Shutdown ( void ) ;
2010-07-11 02:22:39 +00:00
qboolean CSQC_StuffCmd ( int lplayernum , char * cmd , char * cmdend ) ;
2017-04-18 11:12:17 +00:00
void CSQC_MapEntityEdited ( int modelindex , int idx , const char * newe ) ;
2018-01-03 04:40:06 +00:00
//qboolean CSQC_LoadResource(char *resname, char *restype);
2009-11-04 21:16:50 +00:00
qboolean CSQC_ParsePrint ( char * message , int printlevel ) ;
2020-09-08 05:11:09 +00:00
qboolean CSQC_ParseGamePacket ( int seat , qboolean sized ) ;
2017-08-14 16:38:44 +00:00
qboolean CSQC_CenterPrint ( int seat , const char * cmd ) ;
2019-06-17 04:21:41 +00:00
void CSQC_ServerInfoChanged ( void ) ;
void CSQC_PlayerInfoChanged ( int player ) ;
2017-08-14 16:38:44 +00:00
qboolean CSQC_Parse_Damage ( int seat , float save , float take , vec3_t source ) ;
qboolean CSQC_Parse_SetAngles ( int seat , vec3_t newangles , qboolean wasdelta ) ;
void CSQC_Input_Frame ( int seat , usercmd_t * cmd ) ;
2016-12-07 18:45:25 +00:00
void CSQC_WorldLoaded ( void ) ;
2014-03-30 08:55:06 +00:00
qboolean CSQC_ParseTempEntity ( void ) ;
2017-11-16 22:20:40 +00:00
qboolean CSQC_ConsoleCommand ( int seat , const char * cmd ) ;
2016-07-21 19:27:59 +00:00
qboolean CSQC_KeyPress ( int key , int unicode , qboolean down , unsigned int devid ) ;
qboolean CSQC_MouseMove ( float xdelta , float ydelta , unsigned int devid ) ;
qboolean CSQC_MousePosition ( float xabs , float yabs , unsigned int devid ) ;
qboolean CSQC_JoystickAxis ( int axis , float value , unsigned int devid ) ;
2012-02-12 05:18:31 +00:00
qboolean CSQC_Accelerometer ( float x , float y , float z ) ;
2016-02-10 23:23:43 +00:00
qboolean CSQC_Gyroscope ( float x , float y , float z ) ;
2016-12-07 18:45:25 +00:00
int CSQC_StartSound ( int entnum , int channel , char * soundname , vec3_t pos , float vol , float attenuation , float pitchmod , float timeofs , unsigned int flags ) ;
2020-09-08 05:11:09 +00:00
void CSQC_ParseEntities ( qboolean sized ) ;
2020-03-25 21:29:30 +00:00
const char * CSQC_GetExtraFieldInfo ( void * went , char * out , size_t outsize ) ;
2016-12-07 18:45:25 +00:00
void CSQC_ResetTrails ( void ) ;
2009-04-06 00:34:32 +00:00
qboolean CSQC_DeltaPlayer ( int playernum , player_state_t * state ) ;
2016-12-07 18:45:25 +00:00
void CSQC_DeltaStart ( float time ) ;
2009-04-06 00:34:32 +00:00
qboolean CSQC_DeltaUpdate ( entity_state_t * src ) ;
2016-12-07 18:45:25 +00:00
void CSQC_DeltaEnd ( void ) ;
2011-05-20 04:10:46 +00:00
2016-12-07 18:45:25 +00:00
void CSQC_CvarChanged ( cvar_t * var ) ;
2013-03-12 22:59:16 +00:00
# else
# define CSQC_UnconnectedOkay(inprinciple) false
# define CSQC_UnconnectedInit() false
2014-12-11 16:26:26 +00:00
# define CSQC_UseGamecodeLoadingScreen() false
2017-09-20 11:27:13 +00:00
# define CSQC_Parse_SetAngles(seat,newangles,wasdelta) false
2019-06-18 13:03:37 +00:00
# define CSQC_ServerInfoChanged()
# define CSQC_PlayerInfoChanged(player)
2005-02-12 18:56:04 +00:00
# endif
2004-08-23 00:15:46 +00:00
//
// cl_pred.c
//
void CL_InitPrediction ( void ) ;
void CL_PredictMove ( void ) ;
2016-01-18 05:22:07 +00:00
void CL_PredictUsercmd ( int seat , int entnum , player_state_t * from , player_state_t * to , usercmd_t * u ) ;
2004-08-23 00:15:46 +00:00
# ifdef Q2CLIENT
void CLQ2_CheckPredictionError ( void ) ;
# endif
2006-02-11 14:51:36 +00:00
void CL_CalcClientTime ( void ) ;
2004-08-23 00:15:46 +00:00
//
// cl_cam.c
//
2013-06-23 02:17:02 +00:00
qboolean Cam_DrawViewModel ( playerview_t * pv ) ;
int Cam_TrackNum ( playerview_t * pv ) ;
2015-06-22 11:49:15 +00:00
void Cam_Unlock ( playerview_t * pv ) ; //revert to freecam or so, because that entity failed.
void Cam_Lock ( playerview_t * pv , int playernum ) ; //attempt to lock on to the given player.
void Cam_NowLocked ( playerview_t * pv ) ; //player was located, track them now
2013-06-23 02:17:02 +00:00
void Cam_SelfTrack ( playerview_t * pv ) ;
void Cam_Track ( playerview_t * pv , usercmd_t * cmd ) ;
2015-06-22 11:49:15 +00:00
void Cam_SetModAutoTrack ( int userid ) ;
2013-06-23 02:17:02 +00:00
void Cam_FinishMove ( playerview_t * pv , usercmd_t * cmd ) ;
2004-08-23 00:15:46 +00:00
void Cam_Reset ( void ) ;
2013-06-23 02:17:02 +00:00
void Cam_TrackPlayer ( int seat , char * cmdname , char * plrarg ) ;
2004-08-23 00:15:46 +00:00
void CL_InitCam ( void ) ;
2015-06-22 11:49:15 +00:00
void Cam_AutoTrack_Update ( const char * mode ) ; //reset autotrack setting (because we started a new map or whatever)
2004-08-23 00:15:46 +00:00
2004-10-13 06:32:14 +00:00
//
//zqtp.c
//
2005-09-08 08:10:06 +00:00
# define TPM_UNKNOWN 0
# define TPM_NORMAL 1
# define TPM_TEAM 2
# define TPM_SPECTATOR 4
# define TPM_FAKED 16
2008-11-09 22:29:28 +00:00
# define TPM_OBSERVEDTEAM 32
2015-06-18 22:11:30 +00:00
# define TPM_QTV 64 //should only be qtv_say_game/qtv_say_team_game
2005-09-08 08:10:06 +00:00
2007-10-05 19:10:43 +00:00
void CL_Say ( qboolean team , char * extra ) ;
int TP_CategorizeMessage ( char * s , int * offset , player_info_t * * plr ) ;
2020-04-19 01:23:32 +00:00
void TP_ExecTrigger ( char * s , qboolean indemos ) ; //executes one of the user's f_foo aliases from some engine-defined event.
2007-10-05 19:10:43 +00:00
qboolean TP_FilterMessage ( char * s ) ;
void TP_Init ( void ) ;
2019-09-04 07:59:40 +00:00
char * TP_LocationName ( const vec3_t location ) ;
2007-10-05 19:10:43 +00:00
void TP_NewMap ( void ) ;
2020-04-19 01:23:32 +00:00
qboolean TP_CheckSoundTrigger ( char * str ) ; //plays sound files when some substring exists in chat.
void TP_SearchForMsgTriggers ( char * s , int level ) ; //msg_trigger: executes aliases when a chat message contains some user-defined string.
qboolean TP_SuppressMessage ( char * buf ) ; //true when the message contains macro results that the local player isn't meant to see (teamplay messages that contain enemy player counts for instance)
char * TP_GenerateDemoName ( void ) ; //makes something up.
# ifdef QUAKESTATS
//hack zone: this stuff makes assumptions about quake-only stats+items+rules and stuff.
void TP_CheckPickupSound ( char * s , vec3_t org , int seat ) ;
2007-10-05 19:10:43 +00:00
void TP_ParsePlayerInfo ( player_state_t * oldstate , player_state_t * state , player_info_t * info ) ;
2009-11-04 21:16:50 +00:00
qboolean TP_IsPlayerVisible ( vec3_t origin ) ;
2007-10-05 19:10:43 +00:00
qboolean TP_SoundTrigger ( char * message ) ;
void TP_StatChanged ( int stat , int value ) ;
2009-11-04 21:16:50 +00:00
void TP_UpdateAutoStatus ( void ) ;
2020-04-19 01:23:32 +00:00
# endif
# ifdef QWSKINS
colourised_t * TP_FindColours ( char * name ) ;
# endif
2006-02-11 14:51:36 +00:00
2004-08-23 00:15:46 +00:00
//
// skin.c
//
typedef struct
{
char manufacturer ;
char version ;
char encoding ;
char bits_per_pixel ;
unsigned short xmin , ymin , xmax , ymax ;
unsigned short hres , vres ;
unsigned char palette [ 48 ] ;
char reserved ;
char color_planes ;
unsigned short bytes_per_line ;
unsigned short palette_type ;
char filler [ 58 ] ;
// unsigned char data; // unbounded
} pcx_t ;
2006-02-11 14:51:36 +00:00
qbyte * ReadPCXData ( qbyte * buf , int length , int width , int height , qbyte * result ) ;
2004-08-23 00:15:46 +00:00
2014-09-08 23:47:19 +00:00
qwskin_t * Skin_Lookup ( char * fullname ) ;
2004-12-29 03:24:21 +00:00
char * Skin_FindName ( player_info_t * sc ) ;
2004-08-23 00:15:46 +00:00
void Skin_Find ( player_info_t * sc ) ;
2020-08-13 08:39:48 +00:00
qbyte * Skin_TryCache8 ( qwskin_t * skin ) ;
2004-08-23 00:15:46 +00:00
void Skin_Skins_f ( void ) ;
void Skin_FlushSkin ( char * name ) ;
void Skin_AllSkins_f ( void ) ;
void Skin_NextDownload ( void ) ;
2005-01-24 23:47:32 +00:00
void Skin_FlushPlayers ( void ) ;
2013-03-12 22:53:23 +00:00
void Skin_FlushAll ( void ) ;
2004-08-23 00:15:46 +00:00
# define RSSHOT_WIDTH 320
# define RSSHOT_HEIGHT 200
//valid.c
2021-04-14 05:21:04 +00:00
# define RULESET_USERINFO "*rs" //the userinfo used to report the ruleset name to other clients. FIXME: remove the _dbg when we think its all working properly.
void Ruleset_Check ( char * keyval , char * out , size_t outsize ) ;
void Ruleset_Scan ( void ) ;
void Ruleset_Shutdown ( void ) ;
const char * Ruleset_GetRulesetName ( void ) ;
qboolean Ruleset_FileLoaded ( const char * filename , const qbyte * filedata , size_t filesize ) ; //return false if the file is not permitted.
2007-09-18 01:08:49 +00:00
void Validation_Apply_Ruleset ( void ) ;
2004-08-23 00:15:46 +00:00
void Validation_FlushFileList ( void ) ;
void Validation_CheckIfResponse ( char * text ) ;
2007-09-18 01:08:49 +00:00
void Validation_DelatchRulesets ( void ) ;
2004-08-23 00:15:46 +00:00
void InitValidation ( void ) ;
2007-09-17 20:35:39 +00:00
void Validation_Auto_Response ( int playernum , char * s ) ;
2004-08-23 00:15:46 +00:00
extern qboolean f_modified_particles ;
extern qboolean care_f_modified ;
2004-10-13 06:32:14 +00:00
//random files (fixme: clean up)
2004-08-23 00:15:46 +00:00
# ifdef Q2CLIENT
2016-01-18 05:22:07 +00:00
unsigned int CLQ2_GatherSounds ( vec3_t * positions , unsigned int * entnums , sfx_t * * sounds , unsigned int max ) ;
2004-08-23 00:15:46 +00:00
void CLQ2_ParseTEnt ( void ) ;
void CLQ2_AddEntities ( void ) ;
void CLQ2_ParseBaseline ( void ) ;
2013-10-08 14:28:11 +00:00
void CLQ2_ClearParticleState ( void ) ;
2016-10-22 07:06:51 +00:00
void CLR1Q2_ParsePlayerUpdate ( void ) ;
2015-12-28 17:41:39 +00:00
void CLQ2_ParseFrame ( int extrabits ) ;
2017-08-14 16:38:44 +00:00
void CLQ2_ParseMuzzleFlash ( void ) ;
void CLQ2_ParseMuzzleFlash2 ( void ) ;
void CLQ2_ParseInventory ( int seat ) ;
2004-08-23 00:15:46 +00:00
int CLQ2_RegisterTEntModels ( void ) ;
2016-01-18 05:22:07 +00:00
void CLQ2_WriteDemoBaselines ( sizebuf_t * buf ) ;
2004-08-23 00:15:46 +00:00
# endif
2012-07-05 19:42:36 +00:00
# ifdef HLCLIENT
//networking
void CLHL_LoadClientGame ( void ) ;
int CLHL_ParseGamePacket ( void ) ;
int CLHL_AnimateViewEntity ( entity_t * ent ) ;
//screen
int CLHL_DrawHud ( void ) ;
//inputs
int CLHL_GamecodeDoesMouse ( void ) ;
int CLHL_MouseEvent ( unsigned int buttonmask ) ;
void CLHL_SetMouseActive ( int activate ) ;
int CLHL_BuildUserInput ( int msecs , usercmd_t * cmd ) ;
# endif
2009-11-04 21:16:50 +00:00
# ifdef NQPROT
void CLNQ_ParseEntity ( unsigned int bits ) ;
2005-03-10 03:55:18 +00:00
void NQ_P_ParseParticleEffect ( void ) ;
2004-08-23 00:15:46 +00:00
void CLNQ_SignonReply ( void ) ;
void NQ_BeginConnect ( char * to ) ;
void NQ_ContinueConnect ( char * to ) ;
int CLNQ_GetMessage ( void ) ;
2009-11-04 21:16:50 +00:00
# endif
2004-08-23 00:15:46 +00:00
void CL_BeginServerReconnect ( void ) ;
void SV_User_f ( void ) ; //called by client version of the function
void SV_Serverinfo_f ( void ) ;
2014-03-30 08:55:06 +00:00
void SV_ConSay_f ( void ) ;
2004-08-23 00:15:46 +00:00
# ifdef TEXTEDITOR
2016-07-12 00:40:13 +00:00
extern console_t * editormodal ;
2004-08-23 00:15:46 +00:00
void Editor_Draw ( void ) ;
void Editor_Init ( void ) ;
------------------------------------------------------------------------
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
struct pubprogfuncs_s ;
void Editor_ProgsKilled ( struct pubprogfuncs_s * dead ) ;
2019-01-13 16:51:50 +00:00
# else
# define editormodal false
2004-08-23 00:15:46 +00:00
# endif
2006-03-11 00:35:56 +00:00
void SCR_StringToRGB ( char * rgbstring , float * rgb , float rgbinputscale ) ;
2004-10-13 06:32:14 +00:00
2009-07-06 01:20:20 +00:00
struct model_s ;
void CL_AddVWeapModel ( entity_t * player , struct model_s * model ) ;
2004-08-23 00:15:46 +00:00
2017-02-21 20:22:07 +00:00
typedef struct cin_s cin_t ;
# ifdef HAVE_MEDIA_DECODER
2021-10-22 22:27:58 +00:00
# ifdef Q2CLIENT /*q2 cinematics*/
2010-07-11 02:22:39 +00:00
struct cinematics_s ;
void CIN_StopCinematic ( struct cinematics_s * cin ) ;
struct cinematics_s * CIN_PlayCinematic ( char * arg ) ;
2016-07-12 00:40:13 +00:00
int CIN_RunCinematic ( struct cinematics_s * cin , float playbacktime , qbyte * * outdata , int * outwidth , int * outheight , qbyte * * outpalette ) ;
void CIN_Rewind ( struct cinematics_s * cin ) ;
2021-10-22 22:27:58 +00:00
# endif
2004-08-23 00:15:46 +00:00
2016-07-12 00:40:13 +00:00
typedef enum
{
CINSTATE_INVALID , //also reported for not playing
CINSTATE_PLAY ,
CINSTATE_LOOP ,
CINSTATE_PAUSE ,
CINSTATE_ENDED ,
CINSTATE_FLUSHED , //video will restart from beginning
} cinstates_t ;
2010-07-11 02:22:39 +00:00
/*media playing system*/
2013-05-03 04:28:08 +00:00
qboolean Media_PlayFilm ( char * name , qboolean enqueue ) ;
qboolean Media_StopFilm ( qboolean all ) ;
2006-03-06 01:41:09 +00:00
struct cin_s * Media_StartCin ( char * name ) ;
2011-10-27 15:46:36 +00:00
texid_tf Media_UpdateForShader ( cin_t * cin ) ;
2006-03-06 01:41:09 +00:00
void Media_ShutdownCin ( cin_t * cin ) ;
2008-11-09 22:29:28 +00:00
//these accept NULL for cin to mean the current fullscreen video
2014-03-30 08:55:06 +00:00
void Media_Send_Command ( cin_t * cin , const char * command ) ;
2008-11-09 22:29:28 +00:00
void Media_Send_MouseMove ( cin_t * cin , float x , float y ) ;
void Media_Send_Resize ( cin_t * cin , int x , int y ) ;
2015-02-02 08:01:53 +00:00
void Media_Send_GetSize ( cin_t * cin , int * x , int * y , float * aspect ) ;
2009-07-25 11:05:06 +00:00
void Media_Send_KeyEvent ( cin_t * cin , int button , int unicode , int event ) ;
2014-05-23 02:02:51 +00:00
void Media_Send_Reset ( cin_t * cin ) ;
2016-07-12 00:40:13 +00:00
void Media_SetState ( cin_t * cin , cinstates_t newstate ) ;
cinstates_t Media_GetState ( cin_t * cin ) ;
const char * Media_Send_GetProperty ( cin_t * cin , const char * key ) ;
2008-11-09 22:29:28 +00:00
2017-02-21 20:22:07 +00:00
# else
# define Media_PlayFilm(n,e) false
# define Media_StopFilm(a) (void)true
# endif
2018-06-02 08:55:57 +00:00
void Media_SaveTracks ( vfsfile_t * outcfg ) ;
2017-02-21 20:22:07 +00:00
void Media_Init ( void ) ;
qboolean Media_NamedTrack ( const char * initialtrack , const char * looptrack ) ; //new background music interface
void Media_NumberedTrack ( unsigned int initialtrack , unsigned int looptrack ) ; //legacy cd interface for protocols that only support numbered tracks.
void Media_EndedTrack ( void ) ; //cd is no longer running, media code needs to pick a new track (cd track or faketrack)
2004-08-23 00:15:46 +00:00
void MVD_Interpolate ( void ) ;
2004-09-13 03:11:44 +00:00
2007-08-06 21:13:15 +00:00
int Stats_GetKills ( int playernum ) ;
int Stats_GetTKills ( int playernum ) ;
int Stats_GetDeaths ( int playernum ) ;
int Stats_GetTouches ( int playernum ) ;
int Stats_GetCaptures ( int playernum ) ;
2015-06-16 23:53:58 +00:00
qboolean Stats_HaveFlags ( int mode ) ;
2007-08-06 21:13:15 +00:00
qboolean Stats_HaveKills ( void ) ;
2015-11-18 07:37:39 +00:00
float Stats_GetLastOwnFrag ( int seat , char * res , int reslen ) ;
2009-11-04 21:16:50 +00:00
void VARGS Stats_Message ( char * msg , . . . ) LIKEPRINTF ( 1 ) ;
2016-07-26 11:47:59 +00:00
qboolean Stats_ParsePrintLine ( const char * line ) ;
qboolean Stats_ParsePickups ( const char * line ) ;
2007-08-06 21:13:15 +00:00
void Stats_NewMap ( void ) ;
2014-10-05 20:04:11 +00:00
void Stats_Clear ( void ) ;
2015-06-12 14:44:50 +00:00
void Stats_Init ( void ) ;
2006-02-11 14:51:36 +00:00
2018-07-05 16:21:44 +00:00
//enum uploadfmt;
2017-09-20 11:27:13 +00:00
/*struct mediacallbacks_s
{ //functions provided by the engine/renderer, for faster/off-thread updates
qboolean pbocanoffthread ;
qboolean ( VARGS * PBOLock ) ( struct mediacallbacks_s * ctx , size_t width , size_t height , uploadfmt_t fmt , qboolean * lost ) ;
void ( VARGS * PBOUpdate ) ( struct mediacallbacks_s * ctx , void * data , size_t width , size_t height , int stride ) ;
void ( VARGS * PBOUnlock ) ( struct mediacallbacks_s * ctx ) ;
void ( VARGS * AudioStream ) ( void * auddata , int rate , int frames , int channels , int width ) ;
void ( VARGS * WorkQueue ) ( void * wctx , void ( VARGS * callback ) ( void * data ) , void * data ) ;
void ( VARGS * WorkSync ) ( void * wctx , int * address , int oldvalue ) ; //blocks until the address changes. make sure you queued something that will change it from that value. oldvalue is present to avoid races. if you're reading the address then you should probably volatile it to avoid compiler opts reading it twice (fixme: needs a proper barrier).
} ;
*/
2012-04-24 07:59:11 +00:00
typedef struct
{
2016-07-12 00:40:13 +00:00
size_t structsize ;
const char * drivername ;
void * ( VARGS * createdecoder ) ( const char * name ) ;
qboolean ( VARGS * decodeframe ) ( void * ctx , qboolean nosound , qboolean forcevideo , double mediatime , void ( QDECL * uploadtexture ) ( void * ectx , uploadfmt_t fmt , int width , int height , void * data , void * palette ) , void * ectx ) ;
2012-04-24 07:59:11 +00:00
void ( VARGS * shutdown ) ( void * ctx ) ;
void ( VARGS * rewind ) ( void * ctx ) ;
//these are any interactivity functions you might want...
void ( VARGS * cursormove ) ( void * ctx , float posx , float posy ) ; //pos is 0-1
void ( VARGS * key ) ( void * ctx , int code , int unicode , int event ) ;
qboolean ( VARGS * setsize ) ( void * ctx , int width , int height ) ;
void ( VARGS * getsize ) ( void * ctx , int * width , int * height ) ;
2014-03-30 08:55:06 +00:00
void ( VARGS * changestream ) ( void * ctx , const char * streamname ) ;
2016-07-12 00:40:13 +00:00
qboolean ( VARGS * getproperty ) ( void * ctx , const char * field , char * out , size_t * outsize ) ; //if out is null, returns required buffer size. returns 0 on failure / buffer too small
2017-09-20 11:27:13 +00:00
// void *(VARGS *createdecoderCB)(const char *name, struct mediacallbacks_s *callbacks);
2012-04-24 07:59:11 +00:00
} media_decoder_funcs_t ;
2016-07-12 00:40:13 +00:00
typedef struct
{
size_t structsize ;
const char * drivername ;
const char * description ;
2020-01-09 15:35:40 +00:00
const char * extensions ;
2012-11-27 03:23:19 +00:00
void * ( VARGS * capture_begin ) ( char * streamname , int videorate , int width , int height , int * sndkhz , int * sndchannels , int * sndbits ) ;
playdemo accepts https urls now. will start playing before the file has finished downloading, to avoid unnecessary delays.
reworked network addresses to separate address family and connection type. this should make banning people more reliable, as well as simplifying a whole load of logic (no need to check for ipv4 AND ipv6).
tcpconnect will keep trying to connect even if the connection wasn't instant, instead of giving up instantly.
rewrote tcp connections quite a bit. sv_port_tcp now handles qtv+qizmo+http+ws+rtcbroker+tls equivalents.
qtv_streamport is now a legacy cvar and now acts equivalently to sv_port_tcp (but still separate).
rewrote screenshot and video capture code to use strides. this solves image-is-upside down issues with vulkan.
ignore alt key in browser port. oh no! no more red text! oh no! no more alt-being-wrongly-down-and-being-unable-to-type-anything-without-forcing-alt-released!
reworked audio decoder interface. now has clearly defined success/unavailable/end-of-file results. this should solve a whole load of issues with audio streaming.
fixed various openal audio streaming issues too. openal also got some workarounds for emscripten's poor emulation.
fixed ogg decoder to retain sync properly if seeked.
updated menu_media a bit. now reads vorbis comments/id3v1 tags to get proper track names. also saves the playlist so you don't have to manually repopulate the list so it might actually be usable now (after how many years?)
r_stains now defaults to 0, and is no longer enabled by presets. use decals if you want that sort of thing.
added fs_noreexec cvar, so configs will not be reexeced on gamedir change. this also means defaults won't be reapplied, etc.
added 'nvvk' renderer on windows, using nvidia's vulkan-inside-opengl gl extension. mostly just to see how much slower it is.
fixed up the ftp server quite a lot. more complete, more compliant, and should do ipv6 properly to-boot. file transfers also threaded.
fixed potential crash inside runclientphys.
experimental sv_antilag=3 setting. totally untested. the aim is to avoid missing due to lagged knockbacks. may be expensive for the server.
browser port's websockets support fixed. experimental support for webrtc ('works for me', requires a broker server).
updated avplug(renamed to ffmpeg so people know what it is) to use ffmpeg 3.2.4 properly, with its new encoder api. should be much more robust... also added experimental audio decoder for game music etc (currently doesn't resample, so playback rates are screwed, disabled by cvar).
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5097 fc73d0e0-1445-4013-8a0c-d673dee63da5
2017-05-10 02:08:58 +00:00
void ( VARGS * capture_video ) ( void * ctx , int frame , void * data , int stride , int width , int height , enum uploadfmt fmt ) ;
2012-11-27 03:23:19 +00:00
void ( VARGS * capture_audio ) ( void * ctx , void * data , int bytes ) ;
void ( VARGS * capture_end ) ( void * ctx ) ;
} media_encoder_funcs_t ;
2012-04-24 07:59:11 +00:00
extern struct plugin_s * currentplug ;
qboolean Media_RegisterDecoder ( struct plugin_s * plug , media_decoder_funcs_t * funcs ) ;
qboolean Media_UnregisterDecoder ( struct plugin_s * plug , media_decoder_funcs_t * funcs ) ;
2012-11-27 03:23:19 +00:00
qboolean Media_RegisterEncoder ( struct plugin_s * plug , media_encoder_funcs_t * funcs ) ;
qboolean Media_UnregisterEncoder ( struct plugin_s * plug , media_encoder_funcs_t * funcs ) ;