]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
- added infrastructure for dodging mutator
authorFlorian Paul Schmidt <mista.tapas@gmx.net>
Fri, 19 Mar 2010 21:11:49 +0000 (22:11 +0100)
committerFlorian Paul Schmidt <mista.tapas@gmx.net>
Fri, 19 Mar 2010 21:11:49 +0000 (22:11 +0100)
qcsrc/server/cl_client.qc
qcsrc/server/mutators/base.qh
qcsrc/server/mutators/mutator_dodging.qc [new file with mode: 0644]
qcsrc/server/mutators/mutator_dodging.qh [new file with mode: 0644]
qcsrc/server/mutators/mutators.qh
qcsrc/server/progs.src

index c97e53460e803cd4f78905103407fbc353fd256d..6f757318324c48767f798b071aa12262bbcb33b4 100644 (file)
@@ -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;
index 11ea2f6645d5bac0a5db844b92caf9684ef06bee..c8e14901483680842138b5ecf868c58382fc2882 100644 (file)
@@ -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 (file)
index 0000000..bf1284c
--- /dev/null
@@ -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 (file)
index 0000000..ab0c014
--- /dev/null
@@ -0,0 +1 @@
+//
\ No newline at end of file
index bbaad86c2dad8278c1a500030e179d849a1d78c8..da14483a4d40fa52e10fb198b65af8fe109e10dd 100644 (file)
@@ -1,3 +1,5 @@
 MUTATOR_DECLARATION(gamemode_keyhunt);
 
 MUTATOR_DECLARATION(mutator_nix);
+
+MUTATOR_DECLARATION(dodging);
index 8b9014071e8fccbd07a1e70f6158be5d46c788b2..b325251cfd611ffdcf70b97112a5f1ff879ccacb 100644 (file)
@@ -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