]> de.git.xonotic.org Git - voretournament/voretournament.git/blobdiff - data/qcsrc/server/cl_player.qc
Use Erebus animations for the nex fox models, which are a lot prettier. Also fix...
[voretournament/voretournament.git] / data / qcsrc / server / cl_player.qc
index e953ff7d4b41ecebbd10724d7ab70dc218112e67..c0887e40ab197aa7869cb645a8433ddb21273f8f 100644 (file)
@@ -218,70 +218,39 @@ float player_getspecies()
 \r
 void player_setupanimsformodel()\r
 {\r
-       local string animfilename;\r
-       local float animfile;\r
        // defaults for legacy .zym models without animinfo files\r
-       self.anim_die1 = '0 1 0.5'; // 2 seconds\r
-       self.anim_die2 = '1 1 0.5'; // 2 seconds\r
-       self.anim_draw = '2 1 3'; // TODO: analyze models and set framerate\r
-       self.anim_duck = '3 1 100'; // this anim seems bogus in most models, so make it play VERY briefly!\r
-       self.anim_duckwalk = '4 1 1';\r
-       self.anim_duckjump = '5 1 100'; // zym anims keep playing until changed, so this only has to start the anim, landing will end it\r
-       self.anim_duckidle = '6 1 1';\r
-       self.anim_idle = '7 1 1';\r
-       self.anim_jump = '8 1 100'; // zym anims keep playing until changed, so this only has to start the anim, landing will end it\r
-       self.anim_pain1 = '9 1 2'; // 0.5 seconds\r
-       self.anim_pain2 = '10 1 2'; // 0.5 seconds\r
-       self.anim_shoot = '11 1 5'; // TODO: analyze models and set framerate\r
-       self.anim_taunt = '12 1 0.33'; // FIXME?  there is no code using this anim\r
-       self.anim_run = '13 1 1';\r
-       self.anim_runbackwards = '14 1 1';\r
-       self.anim_strafeleft = '15 1 1';\r
-       self.anim_straferight = '16 1 1';\r
-       self.anim_dead1 = '17 1 1';\r
-       self.anim_dead2 = '18 1 1';\r
-       self.anim_forwardright = '19 1 1';\r
-       self.anim_forwardleft = '20 1 1';\r
-       self.anim_backright = '21 1 1';\r
-       self.anim_backleft  = '22 1 1';\r
-       animparseerror = FALSE;\r
-       animfilename = strcat(self.playermodel, ".animinfo"); // only the normal player model may contain animation info\r
-       animfile = fopen(animfilename, FILE_READ);\r
-       if (animfile >= 0)\r
-       {\r
-               self.anim_die1         = animparseline(animfile);\r
-               self.anim_die2         = animparseline(animfile);\r
-               self.anim_draw         = animparseline(animfile);\r
-               self.anim_duck         = animparseline(animfile);\r
-               self.anim_duckwalk     = animparseline(animfile);\r
-               self.anim_duckjump     = animparseline(animfile);\r
-               self.anim_duckidle     = animparseline(animfile);\r
-               self.anim_idle         = animparseline(animfile);\r
-               self.anim_jump         = animparseline(animfile);\r
-               self.anim_pain1        = animparseline(animfile);\r
-               self.anim_pain2        = animparseline(animfile);\r
-               self.anim_shoot        = animparseline(animfile);\r
-               self.anim_taunt        = animparseline(animfile);\r
-               self.anim_run          = animparseline(animfile);\r
-               self.anim_runbackwards = animparseline(animfile);\r
-               self.anim_strafeleft   = animparseline(animfile);\r
-               self.anim_straferight  = animparseline(animfile);\r
-               self.anim_forwardright = animparseline(animfile);\r
-               self.anim_forwardleft  = animparseline(animfile);\r
-               self.anim_backright    = animparseline(animfile);\r
-               self.anim_backleft     = animparseline(animfile);\r
-               fclose(animfile);\r
-\r
-               // derived anims\r
-               self.anim_dead1 = '0 1 1' + '1 0 0' * (self.anim_die1_x + self.anim_die1_y - 1);\r
-               self.anim_dead2 = '0 1 1' + '1 0 0' * (self.anim_die2_x + self.anim_die2_y - 1);\r
-\r
-               if (animparseerror)\r
-                       print("Parse error in ", animfilename, ", some player animations are broken\n");\r
-       }\r
-       else\r
-               dprint("File ", animfilename, " not found, assuming legacy .zym model animation timings\n");\r
-\r
+       self.anim_die1 = animfixfps(self, '0 1 0.5'); // 2 seconds\r
+       self.anim_die2 = animfixfps(self, '1 1 0.5'); // 2 seconds\r
+       self.anim_draw = animfixfps(self, '2 1 3');\r
+       // self.anim_duck = '3 1 100'; // This anim is broken, use slot 3 as a new free slot in the future ;)\r
+       self.anim_duckwalk = animfixfps(self, '4 1 1');\r
+       self.anim_duckjump = '5 1 100'; // NOTE: zym anims keep playing until changed, so this only has to start the anim, landing will end it\r
+       self.anim_duckidle = animfixfps(self, '6 1 1');\r
+       self.anim_idle = animfixfps(self, '7 1 1');\r
+       self.anim_jump = '8 1 100'; // NOTE: zym anims keep playing until changed, so this only has to start the anim, landing will end it\r
+       self.anim_pain1 = animfixfps(self, '9 1 2'); // 0.5 seconds\r
+       self.anim_pain2 = animfixfps(self, '10 1 2'); // 0.5 seconds\r
+       self.anim_shoot = animfixfps(self, '11 1 5'); // analyze models and set framerate\r
+       self.anim_taunt = animfixfps(self, '12 1 0.33');\r
+       self.anim_run = animfixfps(self, '13 1 1');\r
+       self.anim_runbackwards = animfixfps(self, '14 1 1');\r
+       self.anim_strafeleft = animfixfps(self, '15 1 1');\r
+       self.anim_straferight = animfixfps(self, '16 1 1');\r
+       //self.anim_dead1 = animfixfps(self, '17 1 1');\r
+       //self.anim_dead2 = animfixfps(self, '18 1 1');\r
+       self.anim_forwardright = animfixfps(self, '19 1 1');\r
+       self.anim_forwardleft = animfixfps(self, '20 1 1');\r
+       self.anim_backright = animfixfps(self, '21 1 1');\r
+       self.anim_backleft  = animfixfps(self, '22 1 1');\r
+       self.anim_melee = animfixfps(self, '23 1 1');\r
+       self.anim_duckwalkbackwards = animfixfps(self, '24 1 1');\r
+       self.anim_duckwalkstrafeleft = animfixfps(self, '25 1 1');\r
+       self.anim_duckwalkstraferight = animfixfps(self, '26 1 1');\r
+       self.anim_duckwalkforwardright = animfixfps(self, '27 1 1');\r
+       self.anim_duckwalkforwardleft = animfixfps(self, '28 1 1');\r
+       self.anim_duckwalkbackright = animfixfps(self, '29 1 1');\r
+       self.anim_duckwalkbackleft  = animfixfps(self, '30 1 1');\r
+       // TODO introspect models for finding right "fps" value (1/duration)\r
        // reset animstate now\r
        setanim(self, self.anim_idle, TRUE, FALSE, TRUE);\r
 };\r
@@ -329,8 +298,22 @@ void player_anim (void)
                }\r
                else if (self.crouch)\r
                {\r
-                       if (self.movement_x * self.movement_x + self.movement_y * self.movement_y > 20)\r
+                       if (self.movement_x > 0 && self.movement_y == 0)\r
                                setanim(self, self.anim_duckwalk, TRUE, FALSE, FALSE);\r
+                       else if (self.movement_x < 0 && self.movement_y == 0)\r
+                               setanim(self, self.anim_duckwalkbackwards, TRUE, FALSE, FALSE);\r
+                       else if (self.movement_x == 0 && self.movement_y > 0)\r
+                               setanim(self, self.anim_duckwalkstraferight, TRUE, FALSE, FALSE);\r
+                       else if (self.movement_x == 0 && self.movement_y < 0)\r
+                               setanim(self, self.anim_duckwalkstrafeleft, TRUE, FALSE, FALSE);\r
+                       else if (self.movement_x > 0 && self.movement_y > 0)\r
+                               setanim(self, self.anim_duckwalkforwardright, TRUE, FALSE, FALSE);\r
+                       else if (self.movement_x > 0 && self.movement_y < 0)\r
+                               setanim(self, self.anim_duckwalkforwardleft, TRUE, FALSE, FALSE);\r
+                       else if (self.movement_x < 0 && self.movement_y > 0)\r
+                               setanim(self, self.anim_duckwalkbackright, TRUE, FALSE, FALSE);\r
+                       else if (self.movement_x < 0 && self.movement_y < 0)\r
+                               setanim(self, self.anim_duckwalkbackleft, TRUE, FALSE, FALSE);\r
                        else\r
                                setanim(self, self.anim_duckidle, TRUE, FALSE, FALSE);\r
                }\r