From: Florian Paul Schmidt Date: Fri, 19 Mar 2010 21:11:49 +0000 (+0100) Subject: - added infrastructure for dodging mutator X-Git-Tag: xonotic-v0.1.0preview~680^2~31 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=cd86174287c00605175499ff391cc7378aa2f248;p=xonotic%2Fxonotic-data.pk3dir.git - added infrastructure for dodging mutator --- diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index c97e53460..6f7573183 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -2048,6 +2048,7 @@ void SetZoomState(float z) } void GetPressedKeys(void) { + MUTATOR_CALLHOOK(GetPressedKeys); if (self.movement_x > 0) // get if movement keys are pressed { // forward key pressed self.pressedkeys |= KEY_FORWARD; diff --git a/qcsrc/server/mutators/base.qh b/qcsrc/server/mutators/base.qh index 11ea2f664..c8e149014 100644 --- a/qcsrc/server/mutators/base.qh +++ b/qcsrc/server/mutators/base.qh @@ -52,3 +52,4 @@ MUTATOR_HOOKABLE(BuildMutatorsPrettyString); string ret_string; MUTATOR_HOOKABLE(FilterItem); // return error to request removal, or change self.items or self.weapons MUTATOR_HOOKABLE(OnEntityPreSpawn); // return error to prevent entity spawn, or modify the entity MUTATOR_HOOKABLE(PlayerPreThink); +MUTATOR_HOOKABLE(GetPressedKeys); diff --git a/qcsrc/server/mutators/mutator_dodging.qc b/qcsrc/server/mutators/mutator_dodging.qc new file mode 100644 index 000000000..bf1284c67 --- /dev/null +++ b/qcsrc/server/mutators/mutator_dodging.qc @@ -0,0 +1,38 @@ +.float last_FORWARD_KEY_time; +.float last_BACKWARD_KEY_time; +.float last_LEFT_KEY_time; +.float last_RIGHT_KEY_time; + +void dodging_Initialize() { + self.last_FORWARD_KEY_time = 0; + self.last_BACKWARD_KEY_time = 0; + self.last_RIGHT_KEY_time = 0; + self.last_LEFT_KEY_time = 0; +} + +MUTATOR_HOOKFUNCTION(dodging_GetPressedKeys) { + print("dodging_hook\n"); + return 0; +} + +MUTATOR_DEFINITION(dodging) +{ + // we need to be called before GetPressedKey does its thing so we can + // detect state changes.. + MUTATOR_HOOK(GetPressedKeys, dodging_GetPressedKeys, CBC_ORDER_FIRST); + + // this just turns on the cvar. TODO: implement :D + MUTATOR_ONADD + { + // g_dodging = 1; + dodging_Initialize(); + } + + // this just turns off the cvar. TODO: implement :D + MUTATOR_ONREMOVE + { + //g_dodging = 0; + } + + return 0; +} \ No newline at end of file diff --git a/qcsrc/server/mutators/mutator_dodging.qh b/qcsrc/server/mutators/mutator_dodging.qh new file mode 100644 index 000000000..ab0c01417 --- /dev/null +++ b/qcsrc/server/mutators/mutator_dodging.qh @@ -0,0 +1 @@ +// \ No newline at end of file diff --git a/qcsrc/server/mutators/mutators.qh b/qcsrc/server/mutators/mutators.qh index bbaad86c2..da14483a4 100644 --- a/qcsrc/server/mutators/mutators.qh +++ b/qcsrc/server/mutators/mutators.qh @@ -1,3 +1,5 @@ MUTATOR_DECLARATION(gamemode_keyhunt); MUTATOR_DECLARATION(mutator_nix); + +MUTATOR_DECLARATION(dodging); diff --git a/qcsrc/server/progs.src b/qcsrc/server/progs.src index 8b9014071..b325251cf 100644 --- a/qcsrc/server/progs.src +++ b/qcsrc/server/progs.src @@ -23,6 +23,7 @@ defs.qh // Should rename this, it has fields and globals mutators/base.qh mutators/mutators.qh mutators/gamemode_keyhunt.qh // TODO fix this +mutators/mutator_dodging.qh //// tZork Turrets //// tturrets/include/turrets_early.qh @@ -173,6 +174,7 @@ cheats.qc mutators/base.qc mutators/gamemode_keyhunt.qc mutators/mutator_nix.qc +mutators/mutator_dodging.qc ../warpzonelib/anglestransform.qc ../warpzonelib/mathlib.qc