]> git.jsancho.org Git - lugaru.git/blobdiff - Source/Objects/Person.hpp
New non-atacking player
[lugaru.git] / Source / Objects / Person.hpp
index 0734eaa5e2e3dd2022fde3f0316e1acdddd9896e..22c76eb17c4e82fd9038352c5e35ad2b022067b4 100644 (file)
@@ -24,9 +24,9 @@ along with Lugaru.  If not, see <http://www.gnu.org/licenses/>.
 #include "Animation/Animation.hpp"
 #include "Animation/Skeleton.hpp"
 #include "Environment/Terrain.hpp"
-#include "Graphic/gamegl.hpp"
 #include "Graphic/Models.hpp"
 #include "Graphic/Sprite.hpp"
+#include "Graphic/gamegl.hpp"
 #include "Math/XYZ.hpp"
 #include "Objects/PersonType.hpp"
 #include "Objects/Weapons.hpp"
@@ -44,10 +44,12 @@ along with Lugaru.  If not, see <http://www.gnu.org/licenses/>.
 #define getweapontype 7
 #define pathfindtype 8
 
-struct InvalidPersonException : public exception {
-   const char * what () const throw () {
-      return "Invalid weapon number";
-   }
+struct InvalidPersonException : public exception
+{
+    const char* what() const throw()
+    {
+        return "Invalid weapon number";
+    }
 };
 
 class Person : public enable_shared_from_this<Person>
@@ -155,6 +157,7 @@ public:
 
     std::shared_ptr<Person> victim;
     bool hasvictim;
+    bool isplayerfriend;
 
     float updatedelay;
     float normalsupdatedelay;
@@ -183,7 +186,6 @@ public:
     float jumpkeydowntime;
     bool freefall;
 
-
     float turnspeed;
 
     int aitype;
@@ -317,7 +319,7 @@ public:
     Person();
     Person(FILE*, int, unsigned);
 
-    void skeletonLoad(bool clothes = false);
+    void skeletonLoad();
 
     // convenience functions
     inline Joint& joint(int bodypart) { return skeleton.joints[skeleton.jointlabels[bodypart]]; }
@@ -330,6 +332,8 @@ public:
     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);
@@ -375,13 +379,14 @@ public:
     void Reverse();
     void DoDamage(float howmuch);
     void DoHead();
-    void DoMipmaps() {
+    void DoMipmaps()
+    {
         skeleton.drawmodel.textureptr.bind();
         glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, skeleton.skinsize, skeleton.skinsize, 0, GL_RGB, GL_UNSIGNED_BYTE, &skeleton.skinText[0]);
     }
 
-    int SphereCheck(XYZ *p1, float radius, XYZ *p, XYZ *move, float *rotate, Model *model);
+    int SphereCheck(XYZ* p1, float radius, XYZ* p, XYZ* move, float* rotate, Model* model);
     int DrawSkeleton();
     void Puff(int whichlabel);
     void FootLand(bodypart whichfoot, float opacity);
@@ -390,12 +395,18 @@ public:
     void DoAnimations();
     void RagDoll(bool checkcollision);
 
-    void takeWeapon (int weaponId);
+    void takeWeapon(int weaponId);
 
     bool addClothes(const int& clothesId);
     void addClothes();
 
     void doAI();
+
+    bool catchKnife();
+
+    bool hasWeapon() { return (weaponactive != -1); }
+    bool isPlayerControlled() { return (aitype == playercontrolled); }
+    bool isPlayerFriend() { return isplayerfriend; }
 };
 
 const int maxplayers = 10;