X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;ds=sidebyside;f=Source%2FObjects%2FPerson.hpp;h=22c76eb17c4e82fd9038352c5e35ad2b022067b4;hb=e069918736630bf740df60442891b66f93b564e9;hp=5339e03681b5347194e610c74f30abf07f01a559;hpb=635516adc7915de50d38cd01345871a07a24c390;p=lugaru.git
diff --git a/Source/Objects/Person.hpp b/Source/Objects/Person.hpp
index 5339e03..22c76eb 100644
--- a/Source/Objects/Person.hpp
+++ b/Source/Objects/Person.hpp
@@ -1,6 +1,6 @@
/*
Copyright (C) 2003, 2010 - Wolfire Games
-Copyright (C) 2010-2016 - Lugaru contributors (see AUTHORS file)
+Copyright (C) 2010-2017 - Lugaru contributors (see AUTHORS file)
This file is part of Lugaru.
@@ -24,10 +24,11 @@ along with Lugaru. If not, see .
#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 "Math/Quaternions.hpp"
+#include "Graphic/gamegl.hpp"
+#include "Math/XYZ.hpp"
+#include "Objects/PersonType.hpp"
#include "Objects/Weapons.hpp"
#include
@@ -43,17 +44,19 @@ along with Lugaru. If not, see .
#define getweapontype 7
#define pathfindtype 8
-#define rabbittype 0
-#define wolftype 1
-
-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
{
+private:
+ float proportions[4];
+
public:
static std::vector> players;
@@ -95,11 +98,6 @@ public:
XYZ coords;
XYZ velocity;
- XYZ proportionhead;
- XYZ proportionlegs;
- XYZ proportionarms;
- XYZ proportionbody;
-
float unconscioustime;
bool immobile;
@@ -159,6 +157,7 @@ public:
std::shared_ptr victim;
bool hasvictim;
+ bool isplayerfriend;
float updatedelay;
float normalsupdatedelay;
@@ -187,7 +186,6 @@ public:
float jumpkeydowntime;
bool freefall;
-
float turnspeed;
int aitype;
@@ -321,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 +328,11 @@ public:
inline AnimationFrame& currentFrame() { return Animation::animations.at(animCurrent).frames.at(frameCurrent); }
inline AnimationFrame& targetFrame() { return Animation::animations.at(animTarget).frames.at(frameTarget); }
+ void setProportions(float head, float body, float arms, float legs);
+ float getProportion(int part) const;
+ XYZ getProportionXYZ(int part) const;
+
+ void changeCreatureType(person_type type);
void CheckKick();
void CatchFire();
@@ -376,27 +379,34 @@ 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);
void DoStuff();
- void setAnimation(int);
+ void setTargetAnimation(int);
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;