--- deliantra/server/common/anim.C 2008/05/06 16:55:25 1.30
+++ deliantra/server/common/anim.C 2009/11/06 13:03:34 1.33
@@ -5,18 +5,19 @@
* Copyright (©) 2002-2003,2007 Mark Wedel & Crossfire Development Team
* Copyright (©) 1992,2007 Frank Tore Johansen
*
- * Deliantra 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 3 of the License, or
- * (at your option) any later version.
+ * Deliantra is free software: you can redistribute it and/or modify it under
+ * the terms of the Affero GNU General Public License as published by the
+ * Free Software Foundation, either version 3 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
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 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, see .
+ * You should have received a copy of the Affero GNU General Public License
+ * and the GNU General Public License along with this program. If not, see
+ * .
*
* The authors can be reached via e-mail to
*/
@@ -26,7 +27,7 @@
#include
#include
-animhash_t animhash;
+static animhash_t animhash;
std::vector animations;
void
@@ -130,27 +131,15 @@
* is facing.
*/
- if (NUM_FACINGS (op) == 2)
- {
- if (dir < 5)
- base_state = 0;
- else
- base_state = NUM_ANIMATIONS (op) / 2;
- }
- else if (NUM_FACINGS (op) == 4)
- {
- if (dir == 0)
- base_state = 0;
- else
- base_state = ((dir - 1) / 2) * (NUM_ANIMATIONS (op) / 4);
- }
- else if (NUM_FACINGS (op) == 8)
- {
- if (dir == 0)
- base_state = 0;
- else
- base_state = (dir - 1) * (NUM_ANIMATIONS (op) / 8);
- }
+ if (dir > 0)
+ switch (NUM_FACINGS (op))
+ {
+ case 2: base_state = ((dir - 1) / (8 / 2)) * (NUM_ANIMATIONS (op) / 2); break;
+ case 4: base_state = ((dir - 1) / (8 / 4)) * (NUM_ANIMATIONS (op) / 4); break;
+ case 8: base_state = ((dir - 1) / (8 / 8)) * (NUM_ANIMATIONS (op) / 8); break;
+ }
+ else
+ base_state = 0;
/* If beyond drawable states, reset */
if (op->state >= max_state)