X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;ds=sidebyside;f=Source%2FObjects%2FPerson.hpp;h=856f050fee4d4f07713670cefea2e24be25009cb;hb=9981ce00aba99f97ecca8ff7e9331c3a11d8c1be;hp=62af3a6a5c97d0ac0f50a3b2cede01f7b16d23f5;hpb=ed3662c0852c4312a612b4fc35bd03aba8d13db7;p=lugaru.git
diff --git a/Source/Objects/Person.hpp b/Source/Objects/Person.hpp
index 62af3a6..856f050 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.
@@ -23,11 +23,12 @@ along with Lugaru. If not, see .
#include "Animation/Animation.hpp"
#include "Animation/Skeleton.hpp"
+#include "Audio/Sounds.hpp"
#include "Environment/Terrain.hpp"
#include "Graphic/gamegl.hpp"
#include "Graphic/Models.hpp"
#include "Graphic/Sprite.hpp"
-#include "Math/Quaternions.hpp"
+#include "Math/XYZ.hpp"
#include "Objects/Weapons.hpp"
#include
@@ -43,8 +44,11 @@ along with Lugaru. If not, see .
#define getweapontype 7
#define pathfindtype 8
-#define rabbittype 0
-#define wolftype 1
+enum person_type
+{
+ rabbittype = 0,
+ wolftype = 1
+};
struct InvalidPersonException : public exception {
const char * what () const throw () {
@@ -52,8 +56,29 @@ struct InvalidPersonException : public exception {
}
};
+class PersonType
+{
+public:
+ // head, body, arms, legs
+ XYZ proportions[4];
+ animation_type animRun;
+ animation_type animRunning;
+ animation_type animCrouch;
+ animation_type animStop;
+ animation_type animLanding;
+ animation_type animLandingHard;
+ sound_type soundsAttack[4];
+ sound_type soundsTalk[2];
+
+ static std::vector types;
+ static void Load();
+};
+
class Person : public enable_shared_from_this
{
+private:
+ float proportions[4];
+
public:
static std::vector> players;
@@ -95,10 +120,10 @@ public:
XYZ coords;
XYZ velocity;
- XYZ proportionhead;
- XYZ proportionlegs;
- XYZ proportionarms;
- XYZ proportionbody;
+ //~ XYZ proportionhead;
+ //~ XYZ proportionlegs;
+ //~ XYZ proportionarms;
+ //~ XYZ proportionbody;
float unconscioustime;
@@ -330,6 +355,8 @@ 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, float, float, float);
+ XYZ getProportion(int part) const;
void CheckKick();
void CatchFire();
@@ -387,7 +414,7 @@ public:
void Puff(int whichlabel);
void FootLand(bodypart whichfoot, float opacity);
void DoStuff();
- void setAnimation(int);
+ void setTargetAnimation(int);
void DoAnimations();
void RagDoll(bool checkcollision);
@@ -395,6 +422,8 @@ public:
bool addClothes(const int& clothesId);
void addClothes();
+
+ void doAI();
};
const int maxplayers = 10;