X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FObjects%2FPerson.hpp;h=d67c503219e8660987c1ac13958a1a478f30262c;hb=8139604f6d9f7014ef516371895c72fabd55f828;hp=8ad65301ee1e80640202c64ed33670b6e4fc4cb6;hpb=de9ba9db05eccf77c3efebe4cd3bf7636b899064;p=lugaru.git diff --git a/Source/Objects/Person.hpp b/Source/Objects/Person.hpp index 8ad6530..d67c503 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,38 @@ 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]; + + std::string figureFileName; + std::string lowFigureFileName; + std::string clothesFileName; + std::string modelFileNames[7]; + std::string lowModelFileName; + std::string modelClothesFileName; + + std::vector skins; + + 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 +129,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 +364,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();