]> git.jsancho.org Git - lugaru.git/commitdiff
Moved default scale and default damage tolerance to PersonType.
authorCôme Chilliet <come@chilliet.eu>
Fri, 3 Mar 2017 14:27:00 +0000 (15:27 +0100)
committerCôme Chilliet <come@chilliet.eu>
Fri, 3 Mar 2017 14:27:00 +0000 (15:27 +0100)
Added a method for type changing in Person.

Source/Devtools/ConsoleCmds.cpp
Source/GameTick.cpp
Source/Objects/Person.cpp
Source/Objects/Person.hpp
Source/Objects/PersonType.cpp
Source/Objects/PersonType.hpp

index e1e553ed08ec517e1c103de0bfa44d7095bf4c72..38e160086961755246857e07931af50f55d2363b 100644 (file)
@@ -470,20 +470,14 @@ void ch_cellophane(const char*)
 
 void ch_funnybunny(const char*)
 {
 
 void ch_funnybunny(const char*)
 {
-    Person::players[0]->creature = rabbittype;
-    Person::players[0]->skeletonLoad(true);
-    Person::players[0]->scale = .2;
+    Person::players[0]->changeCreatureType(rabbittype);
     Person::players[0]->headless = 0;
     Person::players[0]->headless = 0;
-    Person::players[0]->damagetolerance = 200;
     set_proportion(0, "1 1 1 1");
 }
 
 void ch_wolfie(const char*)
 {
     set_proportion(0, "1 1 1 1");
 }
 
 void ch_wolfie(const char*)
 {
-    Person::players[0]->creature = wolftype;
-    Person::players[0]->skeletonLoad();
-    Person::players[0]->scale = .23;
-    Person::players[0]->damagetolerance = 300;
+    Person::players[0]->changeCreatureType(wolftype);
     set_proportion(0, "1 1 1 1");
 }
 
     set_proportion(0, "1 1 1 1");
 }
 
@@ -650,11 +644,7 @@ void ch_default(const char*)
     Person::players[0]->metallow = 1;
     Person::players[0]->power = 1;
     Person::players[0]->speedmult = 1;
     Person::players[0]->metallow = 1;
     Person::players[0]->power = 1;
     Person::players[0]->speedmult = 1;
-    if (Person::players[0]->creature == wolftype) {
-        Person::players[0]->scale = .23;
-    } else if (Person::players[0]->creature == rabbittype) {
-        Person::players[0]->scale = .2;
-    }
+    Person::players[0]->scale = PersonType::types[Person::players[0]->creature].defaultScale;
 
     Person::players[0]->setProportions(1, 1, 1, 1);
 
 
     Person::players[0]->setProportions(1, 1, 1, 1);
 
index e737a4e95f3799cf42c9b3f33cdddbeb3c91bf72..92a36c992b99881b728470993711c5eb629f69c5 100644 (file)
@@ -1054,23 +1054,26 @@ void Game::ProcessDevInput()
             editorenabled = !editorenabled;
             if (editorenabled) {
                 Person::players[0]->damagetolerance = 100000;
             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;
             }
             } 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;
         }
 
         /* 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]->permanentdamage = 0;
             Person::players[0]->superpermanentdamage = 0;
+            Person::players[0]->burnt = 0;
+            Person::players[0]->bloodloss = 0;
+            Person::players[0]->deathbleeding = 0;
         }
 
         /* Change environment */
         }
 
         /* Change environment */
@@ -1210,22 +1213,8 @@ void Game::ProcessDevInput()
             }
 
             if (closest >= 0) {
             }
 
             if (closest >= 0) {
-                if (Person::players[closest]->creature == rabbittype) {
-                    Person::players[closest]->creature = wolftype;
-                    Person::players[closest]->whichskin = 0;
-                    Person::players[closest]->skeletonLoad();
-                    Person::players[closest]->scale *= 1.15;
-
-                    Person::players[closest]->damagetolerance = 300;
-                } else { // wolftype
-                    Person::players[closest]->creature = rabbittype;
-                    Person::players[closest]->whichskin = 0;
-                    Person::players[closest]->skeletonLoad(true);
-
-                    Person::players[closest]->scale /= 1.15;
-
-                    Person::players[closest]->damagetolerance = 200;
-                }
+                person_type nextType = static_cast<person_type>((Person::players[closest]->creature + 1) % PersonType::types.size());
+                Person::players[closest]->changeCreatureType(nextType);
             }
         }
 
             }
         }
 
index 7a16709f30a2deffd852bec219fdc7c16b56cfd8..e9ccbbf9b6ea753b11aef0a8a54a572991e6919e 100644 (file)
@@ -130,30 +130,24 @@ Person::Person()
     , skiddingdelay(0)
     , deathbleeding(0)
     , tempdeltav(0)
     , skiddingdelay(0)
     , deathbleeding(0)
     , tempdeltav(0)
-    ,
 
 
-    damagetolerance(200)
+    , damagetolerance(0)
     , damage(0)
     , permanentdamage(0)
     , superpermanentdamage(0)
     , lastcollide(0)
     , dead(0)
     , damage(0)
     , permanentdamage(0)
     , superpermanentdamage(0)
     , lastcollide(0)
     , dead(0)
-    ,
 
 
-    jumppower(5)
+    jumppower(5)
     , onground(false)
     , onground(false)
-    ,
 
 
-    wentforweapon(0)
-    ,
+    , wentforweapon(0)
 
 
-    calcrot(false)
-    ,
+    , calcrot(false)
 
 
-    facing()
-    ,
+    , facing()
 
 
-    bleeding(0)
+    bleeding(0)
     , bleedx(0)
     , bleedy(0)
     , direction(0)
     , bleedx(0)
     , bleedy(0)
     , direction(0)
@@ -353,6 +347,7 @@ Person::Person()
 
     jumpclimb(false)
 {
 
     jumpclimb(false)
 {
+    damagetolerance = PersonType::types[creature].defaultDamageTolerance;
     setProportions(1, 1, 1, 1);
 }
 
     setProportions(1, 1, 1, 1);
 }
 
@@ -435,22 +430,25 @@ Person::Person(FILE* tfile, int mapvers, unsigned i)
 
     loaded = true;
 
 
     loaded = true;
 
-    if (creature == wolftype) {
-        damagetolerance = 300;
-    }
+    damagetolerance = PersonType::types[creature].defaultDamageTolerance;
 
     if (scale < 0) {
 
     if (scale < 0) {
-        if (creature == wolftype) {
-            scale = .23;
-        } else {
-            scale = .2;
-        }
+        scale = PersonType::types[creature].defaultScale;
     }
 
     oldcoords = coords;
     realoldcoords = coords;
 }
 
     }
 
     oldcoords = coords;
     realoldcoords = coords;
 }
 
+void Person::changeCreatureType(person_type type)
+{
+    creature = type;
+    whichskin = 0;
+    skeletonLoad(type == rabbittype);
+    scale = PersonType::types[creature].defaultScale;
+    damagetolerance = PersonType::types[creature].defaultDamageTolerance;
+}
+
 void Person::skeletonLoad(bool clothes)
 {
     skeleton.id = id;
 void Person::skeletonLoad(bool clothes)
 {
     skeleton.id = id;
index 2ead16e9a87922d662cbf65b5bc922175afe6a74..beaf11c17873f35e3b961953d507b463c48a6911 100644 (file)
@@ -331,6 +331,8 @@ public:
     float getProportion(int part) const;
     XYZ getProportionXYZ(int part) const;
 
     float getProportion(int part) const;
     XYZ getProportionXYZ(int part) const;
 
+    void changeCreatureType(person_type type);
+
     void CheckKick();
     void CatchFire();
     void DoBlood(float howmuch, int which);
     void CheckKick();
     void CatchFire();
     void DoBlood(float howmuch, int which);
index 2cddb3201e5fe583e41e977d0c0adc48e04da193..3dc4df83bbcb0ceebdbaea6832793347fbfb3816 100644 (file)
@@ -76,6 +76,8 @@ void PersonType::Load()
     types[wolftype].skins[2] = "Textures/FurWolfSnow.jpg";
 
     types[wolftype].power = 2.5;
     types[wolftype].skins[2] = "Textures/FurWolfSnow.jpg";
 
     types[wolftype].power = 2.5;
+    types[wolftype].defaultDamageTolerance = 300;
+    types[wolftype].defaultScale = .23;
 
     /* Rabbit */
     types[rabbittype].proportions[0] = 1.2;
 
     /* Rabbit */
     types[rabbittype].proportions[0] = 1.2;
@@ -127,4 +129,6 @@ void PersonType::Load()
     types[rabbittype].skins[9] = "Textures/FurBrownWhite.jpg";
 
     types[rabbittype].power = 1;
     types[rabbittype].skins[9] = "Textures/FurBrownWhite.jpg";
 
     types[rabbittype].power = 1;
+    types[rabbittype].defaultDamageTolerance = 200;
+    types[rabbittype].defaultScale = .2;
 }
 }
index 119fa20e95c208103b1704489e881af42664c200..09333ba4d61144a8b70303cc94d4183fbbe31312 100644 (file)
@@ -58,6 +58,8 @@ public:
     std::vector<std::string> skins;
 
     float power;
     std::vector<std::string> skins;
 
     float power;
+    unsigned int defaultDamageTolerance;
+    float defaultScale;
 
     GLubyte bloodText[512 * 512 * 3] = { 0 };
 
 
     GLubyte bloodText[512 * 512 * 3] = { 0 };