X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fphysics%2Fplayer.qh;h=e3e563ebeda615c245ff67055fcc11603d6f5599;hb=836bf45aa198f1bb7a4a0fa8bba2ac800d7bd5e9;hp=f120e9fe6cff8ebe5866250663aa8c9f314d6dff;hpb=4f133bdb70d13143f2ce4b9de097744371c1f92a;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/physics/player.qh b/qcsrc/common/physics/player.qh index f120e9fe6..e3e563ebe 100644 --- a/qcsrc/common/physics/player.qh +++ b/qcsrc/common/physics/player.qh @@ -1,10 +1,7 @@ -#ifndef COMMON_PHYSICS_H -#define COMMON_PHYSICS_H +#pragma once // Client/server mappings -.float pm_frametime; - .entity conveyor; .float race_penalty; @@ -21,23 +18,26 @@ #endif .vector movement_old; -.float buttons_old; .vector v_angle_old; .string lastclassname; -.float(entity) PlayerPhysplug; +.float(entity,float) PlayerPhysplug; float AdjustAirAccelQW(float accelqw, float factor); bool IsFlying(entity a); -#define BUFFS_STAT(s) STAT(BUFFS, s) +#define PHYS_PL_MAX(s) STAT(PL_MAX, s) +#define PHYS_PL_MIN(s) STAT(PL_MIN, s) +#define PHYS_PL_CROUCH_MAX(s) STAT(PL_CROUCH_MAX, s) +#define PHYS_PL_CROUCH_MIN(s) STAT(PL_CROUCH_MIN, s) + +#define PHYS_PL_VIEWOFS(s) STAT(PL_VIEW_OFS, s) +#define PHYS_PL_CROUCH_VIEWOFS(s) STAT(PL_CROUCH_VIEW_OFS, s) -#define GAMEPLAYFIX_DOWNTRACEONGROUND(s) STAT(GAMEPLAYFIX_DOWNTRACEONGROUND, s) -#define GAMEPLAYFIX_EASIERWATERJUMP(s) STAT(GAMEPLAYFIX_EASIERWATERJUMP, s) -#define GAMEPLAYFIX_STEPDOWN(s) STAT(GAMEPLAYFIX_STEPDOWN, s) -#define GAMEPLAYFIX_STEPMULTIPLETIMES(s) STAT(GAMEPLAYFIX_STEPMULTIPLETIMES, s) -#define GAMEPLAYFIX_UNSTICKPLAYERS(s) STAT(GAMEPLAYFIX_UNSTICKPLAYERS, s) -#define GAMEPLAYFIX_WATERTRANSITION(s) STAT(GAMEPLAYFIX_WATERTRANSITION, s) +#define PHYS_VIEWHEIGHT(s) STAT(VIEWHEIGHT, s) +#define PHYS_HEALTH(s) STAT(HEALTH, s) + +#define BUFFS_STAT(s) STAT(BUFFS, s) #define PHYS_ACCELERATE(s) STAT(MOVEVARS_ACCELERATE, s) #define PHYS_AIRACCELERATE(s) STAT(MOVEVARS_AIRACCELERATE, s) @@ -47,6 +47,8 @@ bool IsFlying(entity a); #define PHYS_AIRCONTROL(s) STAT(MOVEVARS_AIRCONTROL, s) #define PHYS_AIRCONTROL_PENALTY(s) STAT(MOVEVARS_AIRCONTROL_PENALTY, s) #define PHYS_AIRCONTROL_POWER(s) STAT(MOVEVARS_AIRCONTROL_POWER, s) +#define PHYS_AIRCONTROL_BACKWARDS(s) STAT(MOVEVARS_AIRCONTROL_BACKWARDS, s) +#define PHYS_AIRCONTROL_SIDEWARDS(s) STAT(MOVEVARS_AIRCONTROL_SIDEWARDS, s) #define PHYS_AIRSPEEDLIMIT_NONQW(s) STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW, s) #define PHYS_AIRSTOPACCELERATE(s) STAT(MOVEVARS_AIRSTOPACCELERATE, s) #define PHYS_AIRSTRAFEACCELERATE(s) STAT(MOVEVARS_AIRSTRAFEACCELERATE, s) @@ -72,30 +74,24 @@ bool IsFlying(entity a); #define PHYS_JETPACK_MAXSPEED_UP(s) STAT(JETPACK_MAXSPEED_UP, s) #define PHYS_JETPACK_REVERSE_THRUST(s) STAT(JETPACK_REVERSE_THRUST, s) -#define PHYS_JUMPSPEEDCAP_DISABLE_ONRAMPS(s) STAT(MOVEVARS_JUMPSPEEDCAP_DISABLE_ONRAMPS, s) -#define PHYS_JUMPSTEP(s) STAT(MOVEVARS_JUMPSTEP, s) +#define PHYS_JUMPSPEEDCAP_DISABLE_ONRAMPS(s) STAT(MOVEVARS_JUMPSPEEDCAP_DISABLE_ONRAMPS, NULL) #define PHYS_JUMPVELOCITY(s) STAT(MOVEVARS_JUMPVELOCITY, s) #define PHYS_MAXAIRSPEED(s) STAT(MOVEVARS_MAXAIRSPEED, s) #define PHYS_MAXAIRSTRAFESPEED(s) STAT(MOVEVARS_MAXAIRSTRAFESPEED, s) #define PHYS_MAXSPEED(s) STAT(MOVEVARS_MAXSPEED, s) -#define PHYS_NOSTEP(s) STAT(NOSTEP, s) -#define PHYS_STEPHEIGHT(s) STAT(MOVEVARS_STEPHEIGHT, s) - #define PHYS_STOPSPEED(s) STAT(MOVEVARS_STOPSPEED, s) #define PHYS_TRACK_CANJUMP(s) STAT(MOVEVARS_TRACK_CANJUMP, s) -#define PHYS_WALLFRICTION(s) STAT(MOVEVARS_WALLFRICTION, s) - #define PHYS_WARSOWBUNNY_ACCEL(s) STAT(MOVEVARS_WARSOWBUNNY_ACCEL, s) #define PHYS_WARSOWBUNNY_AIRFORWARDACCEL(s) STAT(MOVEVARS_WARSOWBUNNY_AIRFORWARDACCEL, s) #define PHYS_WARSOWBUNNY_BACKTOSIDERATIO(s) STAT(MOVEVARS_WARSOWBUNNY_BACKTOSIDERATIO, s) #define PHYS_WARSOWBUNNY_TOPSPEED(s) STAT(MOVEVARS_WARSOWBUNNY_TOPSPEED, s) #define PHYS_WARSOWBUNNY_TURNACCEL(s) STAT(MOVEVARS_WARSOWBUNNY_TURNACCEL, s) -#define UPWARD_VELOCITY_CLEARS_ONGROUND(s) STAT(GAMEPLAYFIX_UPVELOCITYCLEARSONGROUND, s) +#define PHYS_SLICK_APPLYGRAVITY(s) STAT(SLICK_APPLYGRAVITY, NULL) #define PHYS_INPUT_BUTTON_ATCK(s) PHYS_INPUT_BUTTON_BUTTON1(s) #define PHYS_INPUT_BUTTON_JUMP(s) PHYS_INPUT_BUTTON_BUTTON2(s) @@ -119,6 +115,7 @@ STATIC_INIT(PHYS_INPUT_BUTTON_HOOK) #define PHYS_INPUT_BUTTON_PRYDON(s) PHYS_INPUT_BUTTON_BUTTON_PRYDON(s) #define PHYS_INPUT_BUTTON_ZOOMSCRIPT(s) PHYS_INPUT_BUTTON_BUTTON9(s) #define PHYS_INPUT_BUTTON_JETPACK(s) PHYS_INPUT_BUTTON_BUTTON10(s) +#define PHYS_INPUT_BUTTON_DODGE(s) PHYS_INPUT_BUTTON_BUTTON11(s) #ifdef CSQC STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK) @@ -126,6 +123,12 @@ STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK) localcmd("alias +jetpack +button10\n"); localcmd("alias -jetpack -button10\n"); } + +STATIC_INIT(PHYS_INPUT_BUTTON_DODGE) +{ + localcmd("alias +dodge +button11\n"); + localcmd("alias -dodge -button11\n"); +} #endif // if more buttons are needed, start using impulse bits as buttons @@ -156,6 +159,7 @@ STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK) #define UNSET_JUMP_HELD(s) ((s).flags |= FL_JUMPRELEASED) #define WAS_ONGROUND(s) boolean((s).lastflags & FL_ONGROUND) +#define WAS_ONSLICK(s) boolean((s).lastflags & FL_ONSLICK) #define ITEMS_STAT(s) ((s).items) @@ -185,18 +189,14 @@ STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK) .entity hook; // TODO - #define IS_CLIENT(s) ((s).isplayermodel) + #define IS_CLIENT(s) ((s).isplayermodel || (s) == csqcplayer) #define IS_PLAYER(s) ((s).isplayermodel) - #define IS_NOT_A_CLIENT(s) (!(s).isplayermodel) + #define IS_NOT_A_CLIENT(s) (!(s).isplayermodel && (s) != csqcplayer) #define isPushable(s) ((s).isplayermodel || (s).pushable || ((s).flags & FL_PROJECTILE)) //float player_multijump; //float player_jumpheight; - #define PHYS_GRAVITY(s) STAT(MOVEVARS_GRAVITY, s) - - #define TICRATE ticrate - #define PHYS_INPUT_ANGLES(s) input_angles // TODO #define PHYS_WORLD_ANGLES(s) input_angles @@ -205,6 +205,7 @@ STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK) #define PHYS_INPUT_FRAMETIME serverdeltatime #define PHYS_INPUT_MOVEVALUES(s) input_movevalues + #define PHYS_CS(s) (s) #define PHYS_INPUT_BUTTON_BUTTON1(s) boolean(input_buttons & BIT(0)) #define PHYS_INPUT_BUTTON_BUTTON2(s) boolean(input_buttons & BIT(1)) @@ -226,10 +227,6 @@ STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK) #define PHYS_INPUT_BUTTON_BUTTON15(s) boolean(input_buttons & BIT(17)) #define PHYS_INPUT_BUTTON_BUTTON16(s) boolean(input_buttons & BIT(18)) - #define GAMEPLAYFIX_GRAVITYUNAFFECTEDBYTICRATE (boolean(moveflags & MOVEFLAG_GRAVITYUNAFFECTEDBYTICRATE)) - #define GAMEPLAYFIX_NOGRAVITYONGROUND (boolean(moveflags & MOVEFLAG_NOGRAVITYONGROUND)) - #define GAMEPLAYFIX_Q2AIRACCELERATE (boolean(moveflags & MOVEFLAG_Q2AIRACCELERATE)) - #define IS_DUCKED(s) (boolean((s).flags & FL_DUCKED)) #define SET_DUCKED(s) ((s).flags |= FL_DUCKED) #define UNSET_DUCKED(s) ((s).flags &= ~FL_DUCKED) @@ -238,8 +235,6 @@ STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK) #define PHYS_JUMPSPEEDCAP_MAX autocvar_cl_jumpspeedcap_max #define PHYS_CL_TRACK_CANJUMP(s) STAT(MOVEVARS_CL_TRACK_CANJUMP, s) - // FIXME: 0 doesn't mean zero gravity - #define PHYS_ENTGRAVITY(s) STAT(MOVEVARS_ENTGRAVITY, s) #elif defined(SVQC) @@ -247,6 +242,10 @@ STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK) bool Physics_Valid(string thecvar); + void Physics_UpdateStats(entity this, float maxspd_mod); + + void PM_UpdateButtons(entity this, entity store); + .float stat_sv_airspeedlimit_nonqw = _STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW); .float stat_sv_maxspeed = _STAT(MOVEVARS_MAXSPEED); @@ -254,41 +253,34 @@ STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK) .string jumpspeedcap_min; .string jumpspeedcap_max; - #define PHYS_GRAVITY(s) autocvar_sv_gravity - - #define TICRATE sys_frametime - #define PHYS_INPUT_ANGLES(s) ((s).v_angle) #define PHYS_WORLD_ANGLES(s) ((s).angles) #define PHYS_INPUT_TIMELENGTH frametime #define PHYS_INPUT_FRAMETIME sys_frametime - #define PHYS_INPUT_MOVEVALUES(s) ((s).movement) - - #define PHYS_INPUT_BUTTON_BUTTON1(s) ((s).button0) - #define PHYS_INPUT_BUTTON_BUTTON2(s) ((s).button2) - #define PHYS_INPUT_BUTTON_BUTTON3(s) ((s).button3) - #define PHYS_INPUT_BUTTON_BUTTON4(s) ((s).button4) - #define PHYS_INPUT_BUTTON_BUTTON5(s) ((s).button5) - #define PHYS_INPUT_BUTTON_BUTTON6(s) ((s).button6) - #define PHYS_INPUT_BUTTON_BUTTON7(s) ((s).button7) - #define PHYS_INPUT_BUTTON_BUTTON8(s) ((s).button8) - #define PHYS_INPUT_BUTTON_BUTTON_USE(s) ((s).buttonuse) - #define PHYS_INPUT_BUTTON_BUTTON_CHAT(s) ((s).buttonchat) - #define PHYS_INPUT_BUTTON_BUTTON_PRYDON(s) ((s).cursor_active) - #define PHYS_INPUT_BUTTON_BUTTON9(s) ((s).button9) - #define PHYS_INPUT_BUTTON_BUTTON10(s) ((s).button10) - #define PHYS_INPUT_BUTTON_BUTTON11(s) ((s).button11) - #define PHYS_INPUT_BUTTON_BUTTON12(s) ((s).button12) - #define PHYS_INPUT_BUTTON_BUTTON13(s) ((s).button13) - #define PHYS_INPUT_BUTTON_BUTTON14(s) ((s).button14) - #define PHYS_INPUT_BUTTON_BUTTON15(s) ((s).button15) - #define PHYS_INPUT_BUTTON_BUTTON16(s) ((s).button16) - - #define GAMEPLAYFIX_GRAVITYUNAFFECTEDBYTICRATE autocvar_sv_gameplayfix_gravityunaffectedbyticrate - #define GAMEPLAYFIX_NOGRAVITYONGROUND autocvar_sv_gameplayfix_nogravityonground - #define GAMEPLAYFIX_Q2AIRACCELERATE autocvar_sv_gameplayfix_q2airaccelerate + #define PHYS_INPUT_MOVEVALUES(s) CS(s).movement + #define PHYS_CS(s) CS(s) + + #define PHYS_INPUT_BUTTON_BUTTON1(s) (CS(s).button0) + #define PHYS_INPUT_BUTTON_BUTTON2(s) (CS(s).button2) + #define PHYS_INPUT_BUTTON_BUTTON3(s) (CS(s).button3) + #define PHYS_INPUT_BUTTON_BUTTON4(s) (CS(s).button4) + #define PHYS_INPUT_BUTTON_BUTTON5(s) (CS(s).button5) + #define PHYS_INPUT_BUTTON_BUTTON6(s) (CS(s).button6) + #define PHYS_INPUT_BUTTON_BUTTON7(s) (CS(s).button7) + #define PHYS_INPUT_BUTTON_BUTTON8(s) (CS(s).button8) + #define PHYS_INPUT_BUTTON_BUTTON_USE(s) (CS(s).buttonuse) + #define PHYS_INPUT_BUTTON_BUTTON_CHAT(s) (CS(s).buttonchat) + #define PHYS_INPUT_BUTTON_BUTTON_PRYDON(s) (CS(s).cursor_active) + #define PHYS_INPUT_BUTTON_BUTTON9(s) (CS(s).button9) + #define PHYS_INPUT_BUTTON_BUTTON10(s) (CS(s).button10) + #define PHYS_INPUT_BUTTON_BUTTON11(s) (CS(s).button11) + #define PHYS_INPUT_BUTTON_BUTTON12(s) (CS(s).button12) + #define PHYS_INPUT_BUTTON_BUTTON13(s) (CS(s).button13) + #define PHYS_INPUT_BUTTON_BUTTON14(s) (CS(s).button14) + #define PHYS_INPUT_BUTTON_BUTTON15(s) (CS(s).button15) + #define PHYS_INPUT_BUTTON_BUTTON16(s) (CS(s).button16) #define IS_DUCKED(s) ((s).crouch) #define SET_DUCKED(s) ((s).crouch = true) @@ -298,10 +290,20 @@ STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK) #define PHYS_JUMPSPEEDCAP_MAX autocvar_sv_jumpspeedcap_max #define PHYS_CL_TRACK_CANJUMP(s) ((s).cvar_cl_movement_track_canjump) - #define PHYS_ENTGRAVITY(s) ((s).gravity) #endif +#ifdef SVQC +// FIXME/EXPLAINME: why? Mario: because +vector autocvar_sv_player_maxs = '16 16 45'; +vector autocvar_sv_player_mins = '-16 -16 -24'; +vector autocvar_sv_player_viewoffset = '0 0 35'; +vector autocvar_sv_player_crouch_maxs = '16 16 25'; +vector autocvar_sv_player_crouch_mins = '-16 -16 -24'; +vector autocvar_sv_player_crouch_viewoffset = '0 0 20'; +//vector autocvar_sv_player_headsize = '24 24 12'; +#endif + REGISTER_NET_C2S(setpause) #ifdef CSQC void unpause_update() @@ -325,5 +327,3 @@ NET_HANDLE(setpause, bool) return true; } #endif - -#endif