X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FObjects%2FPerson.hpp;h=89d5b40277022d92e445c55449f42e86a08cbf0a;hb=be5fc624393b132863a7d9a97c811bc695b86e5b;hp=1b9a01c8f079b1d997f94b1eca7a2980302fa397;hpb=ce14053e72f4d03078e8d5e8b22721feafb0bd20;p=lugaru.git diff --git a/Source/Objects/Person.hpp b/Source/Objects/Person.hpp index 1b9a01c..89d5b40 100644 --- a/Source/Objects/Person.hpp +++ b/Source/Objects/Person.hpp @@ -23,12 +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 "Graphic/gamegl.hpp" #include "Math/XYZ.hpp" +#include "Objects/PersonType.hpp" #include "Objects/Weapons.hpp" #include @@ -44,41 +44,12 @@ along with Lugaru. If not, see . #define getweapontype 7 #define pathfindtype 8 -enum person_type -{ - rabbittype = 0, - wolftype = 1 -}; - -struct InvalidPersonException : public exception { - const char * what () const throw () { - return "Invalid weapon number"; - } -}; - -class PersonType +struct InvalidPersonException : public exception { -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]; - - std::string figureFileName; - std::string lowFigureFileName; - std::string clothesFileName; - std::string modelFileNames[7]; - std::string lowModelFileName; - std::string modelClothesFileName; - - static std::vector types; - static void Load(); + const char* what() const throw() + { + return "Invalid weapon number"; + } }; class Person : public enable_shared_from_this @@ -127,11 +98,6 @@ public: XYZ coords; XYZ velocity; - //~ XYZ proportionhead; - //~ XYZ proportionlegs; - //~ XYZ proportionarms; - //~ XYZ proportionbody; - float unconscioustime; bool immobile; @@ -219,7 +185,6 @@ public: float jumpkeydowntime; bool freefall; - float turnspeed; int aitype; @@ -353,7 +318,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]]; } @@ -362,8 +327,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, float, float, float); - XYZ getProportion(int part) const; + 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(); @@ -410,13 +378,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); @@ -425,12 +394,17 @@ 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); } }; const int maxplayers = 10;