]> git.jsancho.org Git - lugaru.git/blobdiff - Source/Objects/Person.cpp
Moved models paths to PersonType
[lugaru.git] / Source / Objects / Person.cpp
index ece23ecddef6221a84d89f341e9dc73b3b5c0253..0d4fa9a2cf9b1868427f4cd0484128fe15ed9839 100644 (file)
@@ -81,16 +81,72 @@ void PersonType::Load()
 {
     types.resize(2);
 
+    /* Wolf */
     types[wolftype].proportions[0] = 1.1;
     types[wolftype].proportions[1] = 1.1;
     types[wolftype].proportions[2] = 1.1;
     types[wolftype].proportions[3] = 1.1;
 
+    types[wolftype].animRun = wolfrunanim;
+    types[wolftype].animRunning = wolfrunninganim;
+    types[wolftype].animCrouch = wolfcrouchanim;
+    types[wolftype].animStop = wolfstopanim;
+    types[wolftype].animLanding = wolflandanim;
+    types[wolftype].animLandingHard = wolflandhardanim;
+
+    types[wolftype].soundsAttack[0] = barksound;
+    types[wolftype].soundsAttack[1] = bark2sound;
+    types[wolftype].soundsAttack[2] = bark3sound;
+    types[wolftype].soundsAttack[3] = barkgrowlsound;
+    types[wolftype].soundsTalk[0] = growlsound;
+    types[wolftype].soundsTalk[1] = growl2sound;
+
+    types[wolftype].figureFileName = "Skeleton/BasicFigureWolf";
+    types[wolftype].lowFigureFileName = "Skeleton/BasicFigureWolfLow";
+    types[wolftype].clothesFileName = "Skeleton/RabbitBelt";
+    types[wolftype].modelFileNames[0] = "Models/Wolf.solid";
+    types[wolftype].modelFileNames[1] = "Models/Wolf2.solid";
+    types[wolftype].modelFileNames[2] = "Models/Wolf3.solid";
+    types[wolftype].modelFileNames[3] = "Models/Wolf4.solid";
+    types[wolftype].modelFileNames[4] = "Models/Wolf5.solid";
+    types[wolftype].modelFileNames[5] = "Models/Wolf6.solid";
+    types[wolftype].modelFileNames[6] = "Models/Wolf7.solid";
+    types[wolftype].lowModelFileName = "Models/WolfLow.solid";
+    types[wolftype].modelClothesFileName = "Models/Belt.solid";
+
+    /* Rabbit */
     types[rabbittype].proportions[0] = 1.2;
     types[rabbittype].proportions[1] = 1.05;
     types[rabbittype].proportions[2] = 1;
     types[rabbittype].proportions[3] = 1.1;
     types[rabbittype].proportions[3].y = 1.05;
+
+    types[rabbittype].animRun = runanim;
+    types[rabbittype].animRunning = rabbitrunninganim;
+    types[rabbittype].animCrouch = crouchanim;
+    types[rabbittype].animStop = stopanim;
+    types[rabbittype].animLanding = landanim;
+    types[rabbittype].animLandingHard = landhardanim;
+
+    types[rabbittype].soundsAttack[0] = rabbitattacksound;
+    types[rabbittype].soundsAttack[1] = rabbitattack2sound;
+    types[rabbittype].soundsAttack[2] = rabbitattack3sound;
+    types[rabbittype].soundsAttack[3] = rabbitattack4sound;
+    types[rabbittype].soundsTalk[0] = rabbitchitter;
+    types[rabbittype].soundsTalk[1] = rabbitchitter2;
+
+    types[rabbittype].figureFileName = "Skeleton/BasicFigure";
+    types[rabbittype].lowFigureFileName = "Skeleton/BasicFigureLow";
+    types[rabbittype].clothesFileName = "Skeleton/RabbitBelt";
+    types[rabbittype].modelFileNames[0] = "Models/Body.solid";
+    types[rabbittype].modelFileNames[1] = "Models/Body2.solid";
+    types[rabbittype].modelFileNames[2] = "Models/Body3.solid";
+    types[rabbittype].modelFileNames[3] = "Models/Body4.solid";
+    types[rabbittype].modelFileNames[4] = "Models/Body5.solid";
+    types[rabbittype].modelFileNames[5] = "Models/Body6.solid";
+    types[rabbittype].modelFileNames[6] = "Models/Body7.solid";
+    types[rabbittype].lowModelFileName = "Models/BodyLow.solid";
+    types[rabbittype].modelClothesFileName = "Models/Belt.solid";
 }
 
 Person::Person()
@@ -470,37 +526,20 @@ Person::Person(FILE* tfile, int mapvers, unsigned i)
 void Person::skeletonLoad(bool clothes)
 {
     skeleton.id = id;
-    if (creature != wolftype) {
-        skeleton.Load(
-            "Skeleton/BasicFigure",
-            "Skeleton/BasicFigureLow",
-            "Skeleton/RabbitBelt",
-            "Models/Body.solid",
-            "Models/Body2.solid",
-            "Models/Body3.solid",
-            "Models/Body4.solid",
-            "Models/Body5.solid",
-            "Models/Body6.solid",
-            "Models/Body7.solid",
-            "Models/BodyLow.solid",
-            "Models/Belt.solid",
-            clothes);
-    } else {
-        skeleton.Load(
-            "Skeleton/BasicFigureWolf",
-            "Skeleton/BasicFigureWolfLow",
-            "Skeleton/RabbitBelt",
-            "Models/Wolf.solid",
-            "Models/Wolf2.solid",
-            "Models/Wolf3.solid",
-            "Models/Wolf4.solid",
-            "Models/Wolf5.solid",
-            "Models/Wolf6.solid",
-            "Models/Wolf7.solid",
-            "Models/WolfLow.solid",
-            "Models/Belt.solid",
-            clothes);
-    }
+    skeleton.Load(
+        PersonType::types[creature].figureFileName,
+        PersonType::types[creature].lowFigureFileName,
+        PersonType::types[creature].clothesFileName,
+        PersonType::types[creature].modelFileNames[0],
+        PersonType::types[creature].modelFileNames[1],
+        PersonType::types[creature].modelFileNames[2],
+        PersonType::types[creature].modelFileNames[3],
+        PersonType::types[creature].modelFileNames[4],
+        PersonType::types[creature].modelFileNames[5],
+        PersonType::types[creature].modelFileNames[6],
+        PersonType::types[creature].lowModelFileName,
+        PersonType::types[creature].modelClothesFileName,
+        clothes);
 
     skeleton.drawmodel.textureptr.load(creatureskin[creature][whichskin], 1, &skeleton.skinText[0], &skeleton.skinsize);
 }
@@ -694,13 +733,7 @@ int Person::getIdle()
  */
 int Person::getCrouch()
 {
-    if (creature == rabbittype) {
-        return crouchanim;
-    }
-    if (creature == wolftype) {
-        return wolfcrouchanim;
-    }
-    return 0;
+    return PersonType::types[creature].animCrouch;
 }
 
 /* FUNCTION
@@ -708,59 +741,32 @@ int Person::getCrouch()
  */
 int Person::getRun()
 {
-    if (creature == rabbittype && (!superruntoggle || weaponactive != -1)) {
-        return runanim;
-    }
-    if (creature == wolftype && (!superruntoggle)) {
-        return wolfrunanim;
-    }
-
-    if (creature == rabbittype && (superruntoggle && weaponactive == -1)) {
-        return rabbitrunninganim;
-    }
-    if (creature == wolftype && (superruntoggle)) {
-        return wolfrunninganim;
+    if (superruntoggle && (weaponactive == -1)) {
+        return PersonType::types[creature].animRunning;
+    } else {
+        return PersonType::types[creature].animRun;
     }
-    return 0;
 }
 
 /* FUNCTION
  */
 int Person::getStop()
 {
-    if (creature == rabbittype) {
-        return stopanim;
-    }
-    if (creature == wolftype) {
-        return wolfstopanim;
-    }
-    return 0;
+    return PersonType::types[creature].animStop;
 }
 
 /* FUNCTION
  */
 int Person::getLanding()
 {
-    if (creature == rabbittype) {
-        return landanim;
-    }
-    if (creature == wolftype) {
-        return wolflandanim;
-    }
-    return 0;
+    return PersonType::types[creature].animLanding;
 }
 
 /* FUNCTION
  */
 int Person::getLandhard()
 {
-    if (creature == rabbittype) {
-        return landhardanim;
-    }
-    if (creature == wolftype) {
-        return wolflandhardanim;
-    }
-    return 0;
+    return PersonType::types[creature].animLandingHard;
 }
 
 /* EFFECT
@@ -2388,34 +2394,7 @@ void Person::DoAnimations()
                             if (targetFrame().label == 4 && aitype != playercontrolled) {
                                 if (Animation::animations[animTarget].attack != neutral) {
                                     unsigned r = abs(Random() % 4);
-                                    if (creature == rabbittype) {
-                                        if (r == 0) {
-                                            whichsound = rabbitattacksound;
-                                        }
-                                        if (r == 1) {
-                                            whichsound = rabbitattack2sound;
-                                        }
-                                        if (r == 2) {
-                                            whichsound = rabbitattack3sound;
-                                        }
-                                        if (r == 3) {
-                                            whichsound = rabbitattack4sound;
-                                        }
-                                    }
-                                    if (creature == wolftype) {
-                                        if (r == 0) {
-                                            whichsound = barksound;
-                                        }
-                                        if (r == 1) {
-                                            whichsound = bark2sound;
-                                        }
-                                        if (r == 2) {
-                                            whichsound = bark3sound;
-                                        }
-                                        if (r == 3) {
-                                            whichsound = barkgrowlsound;
-                                        }
-                                    }
+                                    whichsound = PersonType::types[creature].soundsAttack[r];
                                     speechdelay = .3;
                                 }
                             }
@@ -5926,21 +5905,8 @@ void Person::DoStuff()
             int whichsound = -1;
             if (speechdelay <= 0) {
                 unsigned int i = abs(Random() % 4);
-                if (creature == rabbittype) {
-                    if (i == 0) {
-                        whichsound = rabbitchitter;
-                    }
-                    if (i == 1) {
-                        whichsound = rabbitchitter2;
-                    }
-                }
-                if (creature == wolftype) {
-                    if (i == 0) {
-                        whichsound = growlsound;
-                    }
-                    if (i == 1) {
-                        whichsound = growl2sound;
-                    }
+                if (i < 2) {
+                    whichsound = PersonType::types[creature].soundsTalk[i];
                 }
             }
             speechdelay = .3;