]> git.jsancho.org Git - lugaru.git/blobdiff - Source/GameTick.cpp
Moved default scale and default damage tolerance to PersonType.
[lugaru.git] / Source / GameTick.cpp
index 827f82b34957ea793ec5da6b8f02253087a9c7ce..92a36c992b99881b728470993711c5eb629f69c5 100644 (file)
@@ -148,27 +148,6 @@ float musicvolume[4] = {};
 float oldmusicvolume[4] = {};
 int musicselected = 0;
 
-const char* rabbitskin[] = {
-    "Textures/Fur3.jpg",
-    "Textures/Fur.jpg",
-    "Textures/Fur2.jpg",
-    "Textures/Lynx.jpg",
-    "Textures/Otter.jpg",
-    "Textures/Opal.jpg",
-    "Textures/Sable.jpg",
-    "Textures/Chocolate.jpg",
-    "Textures/BW2.jpg",
-    "Textures/WB2.jpg"
-};
-
-const char* wolfskin[] = {
-    "Textures/Wolf.jpg",
-    "Textures/DarkWolf.jpg",
-    "Textures/SnowWolf.jpg"
-};
-
-const char** creatureskin[] = { rabbitskin, wolfskin };
-
 #define STATIC_ASSERT(x) extern int s_a_dummy[2 * (!!(x)) - 1];
 STATIC_ASSERT(rabbittype == 0 && wolftype == 1)
 
@@ -851,11 +830,7 @@ bool Game::LoadLevel(const std::string& name, bool tutorial)
             Person::players[i]->updatedelay = 0;
             Person::players[i]->normalsupdatedelay = 0;
 
-            Person::players[i]->proportionhead = 1.2;
-            Person::players[i]->proportionbody = 1.05;
-            Person::players[i]->proportionarms = 1.00;
-            Person::players[i]->proportionlegs = 1.1;
-            Person::players[i]->proportionlegs.y = 1.05;
+            Person::players[i]->setProportions(1, 1, 1, 1);
             Person::players[i]->headless = 0;
             Person::players[i]->currentoffset = 0;
             Person::players[i]->targetoffset = 0;
@@ -869,13 +844,6 @@ bool Game::LoadLevel(const std::string& name, bool tutorial)
 
         Game::LoadingScreen();
 
-        if (cellophane) {
-            Person::players[i]->proportionhead.z = 0;
-            Person::players[i]->proportionbody.z = 0;
-            Person::players[i]->proportionarms.z = 0;
-            Person::players[i]->proportionlegs.z = 0;
-        }
-
         Person::players[i]->tempanimation = Animation("Tempanim", lowheight, neutral);
 
         if (i == 0) {
@@ -1056,52 +1024,56 @@ void Game::ProcessInput()
 
     /* Devtools */
     if (devtools && !mainmenu) {
-        ProcessDevInput();
+        /* Console */
+        if (Input::isKeyPressed(consolekey)) {
+            console = !console;
+            if (console) {
+                OPENAL_SetFrequency(OPENAL_ALL);
+            } else {
+                freeze = 0;
+                waiting = false;
+            }
+        }
+
+        /* Other devtools, disabled when the console is shown */
+        if (!console) {
+            ProcessDevInput();
+        }
     }
 }
 
 void Game::ProcessDevInput()
 {
-    if (!devtools || mainmenu) {
+    if (!devtools || mainmenu || console) {
         return;
     }
 
-    float headprop, bodyprop, armprop, legprop;
-
-    /* Console */
-    if (Input::isKeyPressed(consolekey)) {
-        console = !console;
-        if (console) {
-            OPENAL_SetFrequency(OPENAL_ALL);
-        } else {
-            freeze = 0;
-            waiting = false;
-        }
-    }
-
     if (Input::isKeyDown(SDL_SCANCODE_LALT)) {
         /* Enable editor */
         if (Input::isKeyPressed(SDL_SCANCODE_M) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
             editorenabled = !editorenabled;
             if (editorenabled) {
                 Person::players[0]->damagetolerance = 100000;
+                Person::players[0]->damage = 0;
+                Person::players[0]->permanentdamage = 0;
+                Person::players[0]->superpermanentdamage = 0;
+                Person::players[0]->burnt = 0;
+                Person::players[0]->bloodloss = 0;
+                Person::players[0]->deathbleeding = 0;
             } else {
                 Person::players[0]->damagetolerance = 200;
             }
-            Person::players[0]->damage = 0; // these lines were in both if and else, but I think they would better fit in the if
-            Person::players[0]->permanentdamage = 0;
-            Person::players[0]->superpermanentdamage = 0;
-            Person::players[0]->bloodloss = 0;
-            Person::players[0]->deathbleeding = 0;
         }
 
         /* Nullify damage and give 200000 health */
         if (Input::isKeyPressed(SDL_SCANCODE_H)) {
             Person::players[0]->damagetolerance = 200000;
             Person::players[0]->damage = 0;
-            Person::players[0]->burnt = 0;
             Person::players[0]->permanentdamage = 0;
             Person::players[0]->superpermanentdamage = 0;
+            Person::players[0]->burnt = 0;
+            Person::players[0]->bloodloss = 0;
+            Person::players[0]->deathbleeding = 0;
         }
 
         /* Change environment */
@@ -1226,7 +1198,7 @@ void Game::ProcessDevInput()
                 }
 
                 Person::players[closest]->skeleton.drawmodel.textureptr.load(
-                    creatureskin[Person::players[closest]->creature][Person::players[closest]->whichskin], 1,
+                    PersonType::types[Person::players[closest]->creature].skins[Person::players[closest]->whichskin], 1,
                     &Person::players[closest]->skeleton.skinText[0], &Person::players[closest]->skeleton.skinsize);
             }
 
@@ -1240,62 +1212,9 @@ void Game::ProcessDevInput()
                 closest = findClosestPlayer();
             }
 
-            // FIXME: Those proportions are buggy
             if (closest >= 0) {
-                if (Person::players[closest]->creature == wolftype) {
-                    headprop = Person::players[closest]->proportionhead.x / 1.1;
-                    bodyprop = Person::players[closest]->proportionbody.x / 1.1;
-                    armprop = Person::players[closest]->proportionarms.x / 1.1;
-                    legprop = Person::players[closest]->proportionlegs.x / 1.1;
-                } else { // rabbittype
-                    headprop = Person::players[closest]->proportionhead.x / 1.2;
-                    bodyprop = Person::players[closest]->proportionbody.x / 1.05;
-                    armprop = Person::players[closest]->proportionarms.x / 1.00;
-                    legprop = Person::players[closest]->proportionlegs.x / 1.1;
-                }
-
-                if (Person::players[closest]->creature == rabbittype) {
-                    Person::players[closest]->creature = wolftype;
-                    Person::players[closest]->whichskin = 0;
-                    Person::players[closest]->skeletonLoad();
-
-                    Person::players[closest]->proportionhead = 1.1;
-                    Person::players[closest]->proportionbody = 1.1;
-                    Person::players[closest]->proportionarms = 1.1;
-                    Person::players[closest]->proportionlegs = 1.1;
-                    Person::players[closest]->proportionlegs.y = 1.1;
-                    Person::players[closest]->scale = .23 * 5 * Person::players[0]->scale;
-
-                    Person::players[closest]->damagetolerance = 300;
-                } else {
-                    Person::players[closest]->creature = rabbittype;
-                    Person::players[closest]->whichskin = 0;
-                    Person::players[closest]->skeletonLoad(true);
-
-                    Person::players[closest]->proportionhead = 1.2;
-                    Person::players[closest]->proportionbody = 1.05;
-                    Person::players[closest]->proportionarms = 1.00;
-                    Person::players[closest]->proportionlegs = 1.1;
-                    Person::players[closest]->proportionlegs.y = 1.05;
-                    Person::players[closest]->scale = .2 * 5 * Person::players[0]->scale;
-
-                    Person::players[closest]->damagetolerance = 200;
-                }
-
-                if (Person::players[closest]->creature == wolftype) {
-                    Person::players[closest]->proportionhead = 1.1 * headprop;
-                    Person::players[closest]->proportionbody = 1.1 * bodyprop;
-                    Person::players[closest]->proportionarms = 1.1 * armprop;
-                    Person::players[closest]->proportionlegs = 1.1 * legprop;
-                }
-
-                if (Person::players[closest]->creature == rabbittype) {
-                    Person::players[closest]->proportionhead = 1.2 * headprop;
-                    Person::players[closest]->proportionbody = 1.05 * bodyprop;
-                    Person::players[closest]->proportionarms = 1.00 * armprop;
-                    Person::players[closest]->proportionlegs = 1.1 * legprop;
-                    Person::players[closest]->proportionlegs.y = 1.05 * legprop;
-                }
+                person_type nextType = static_cast<person_type>((Person::players[closest]->creature + 1) % PersonType::types.size());
+                Person::players[closest]->changeCreatureType(nextType);
             }
         }
 
@@ -1527,40 +1446,7 @@ void Game::ProcessDevInput()
             Person::players.back()->oldcoords = Person::players.back()->coords;
             Person::players.back()->realoldcoords = Person::players.back()->coords;
 
-            if (Person::players[0]->creature == wolftype) {
-                headprop = Person::players[0]->proportionhead.x / 1.1;
-                bodyprop = Person::players[0]->proportionbody.x / 1.1;
-                armprop = Person::players[0]->proportionarms.x / 1.1;
-                legprop = Person::players[0]->proportionlegs.x / 1.1;
-            } else {
-                // rabbittype
-                headprop = Person::players[0]->proportionhead.x / 1.2;
-                bodyprop = Person::players[0]->proportionbody.x / 1.05;
-                armprop = Person::players[0]->proportionarms.x / 1.00;
-                legprop = Person::players[0]->proportionlegs.x / 1.1;
-            }
-
-            if (Person::players.back()->creature == wolftype) {
-                Person::players.back()->proportionhead = 1.1 * headprop;
-                Person::players.back()->proportionbody = 1.1 * bodyprop;
-                Person::players.back()->proportionarms = 1.1 * armprop;
-                Person::players.back()->proportionlegs = 1.1 * legprop;
-            }
-
-            if (Person::players.back()->creature == rabbittype) {
-                Person::players.back()->proportionhead = 1.2 * headprop;
-                Person::players.back()->proportionbody = 1.05 * bodyprop;
-                Person::players.back()->proportionarms = 1.00 * armprop;
-                Person::players.back()->proportionlegs = 1.1 * legprop;
-                Person::players.back()->proportionlegs.y = 1.05 * legprop;
-            }
-
-            if (cellophane) {
-                Person::players.back()->proportionhead.z = 0;
-                Person::players.back()->proportionbody.z = 0;
-                Person::players.back()->proportionarms.z = 0;
-                Person::players.back()->proportionlegs.z = 0;
-            }
+            Person::players.back()->setProportions(1, 1, 1, 1);
 
             Person::players.back()->tempanimation = Animation("Tempanim", lowheight, neutral);