]> git.jsancho.org Git - lugaru.git/blobdiff - Source/Person.h
remove repetitive code
[lugaru.git] / Source / Person.h
index 31bb43197913bf034ec1aff45254686c8afef994..dcf3b21f377a263cb341fb08c8baacb3b68c0238 100644 (file)
@@ -49,18 +49,27 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 class Person
 {
-       public: 
+       public:
                int whichpatchx;
                int whichpatchz;
                
-               int currentframe;
-               int targetframe;
-               int currentanimation;
-               int targetanimation;
-               int oldcurrentframe;
-               int oldtargetframe;
-               int oldcurrentanimation;
-               int oldtargetanimation;
+               // animCurrent and animTarget are used to interpolate between different animations
+               // (and for a bunch of other things).
+               // animations interpolate with one another at various speeds.
+               // animTarget seems to determine the combat state?
+               int animCurrent;
+               int animTarget;
+
+               // frameCurrent and frameTarget are used to interpolate between the frames of an animation
+               // (e.g. the crouched animation has only two frames, lerped back and forth slowly).
+               // animations advance at various speeds.
+               int frameCurrent;
+               int frameTarget;
+
+               int oldanimCurrent;
+               int oldanimTarget;
+               int oldframeCurrent;
+               int oldframeTarget;
                
                int howactive;
                
@@ -85,9 +94,6 @@ class Person
                XYZ proportionarms;
                XYZ proportionbody;
                
-               float heightleft;
-               float heightright;
-               
                float unconscioustime;
                
                bool immobile;
@@ -119,7 +125,7 @@ class Person
                float damage;
                float permanentdamage;
                float superpermanentdamage;
-        float lastcollide;
+               float lastcollide;
                int dead;
                
                float jumppower;
@@ -192,7 +198,7 @@ class Person
                bool whichdirection;
                float whichdirectiondelay;
                bool avoidsomething;
-        XYZ avoidwhere;                
+               XYZ avoidwhere;         
                float blooddimamount;
                
                float staggerdelay;
@@ -253,7 +259,7 @@ class Person
                bool spurt;
                bool onfire;
                float onfiredelay;
-        float burnt;
+               float burnt;
                float fireduration;
                
                float flamedelay;
@@ -297,7 +303,7 @@ class Person
                float stunned;
                float surprised;
                float runninghowlong;
-        int lastoccluded;
+               int lastoccluded;
                int laststanding;
                int escapednum;
                
@@ -320,55 +326,60 @@ class Person
 
 
 
+               // convenience
+               Joint& joint(int);
+               XYZ& jointPos(int);
+               XYZ& jointVel(int);
+
                void CheckKick();
                void CatchFire();
                void DoBlood(float howmuch, int which);
                void DoBloodBig(float howmuch, int which);
                bool DoBloodBigWhere(float howmuch, int which, XYZ where);
                
-               bool wasIdle() { return animation_bits[currentanimation] & ab_idle; }
-               bool isIdle() { return animation_bits[targetanimation] & ab_idle; }
+               bool wasIdle() { return animation_bits[animCurrent] & ab_idle; }
+               bool isIdle() { return animation_bits[animTarget] & ab_idle; }
                int getIdle();
                
-               bool isSitting() { return animation_bits[targetanimation] & ab_sit; }
+               bool isSitting() { return animation_bits[animTarget] & ab_sit; }
 
-               bool isSleeping() { return animation_bits[targetanimation] & ab_sleep; }
+               bool isSleeping() { return animation_bits[animTarget] & ab_sleep; }
 
-               bool wasCrouch() { return animation_bits[currentanimation] & ab_crouch; }
-               bool isCrouch() { return animation_bits[targetanimation] & ab_crouch; }
+               bool wasCrouch() { return animation_bits[animCurrent] & ab_crouch; }
+               bool isCrouch() { return animation_bits[animTarget] & ab_crouch; }
                int getCrouch();
                
-               bool wasStop() { return animation_bits[currentanimation] & ab_stop; }
-               bool isStop() { return animation_bits[targetanimation] & ab_stop; }
+               bool wasStop() { return animation_bits[animCurrent] & ab_stop; }
+               bool isStop() { return animation_bits[animTarget] & ab_stop; }
                int getStop();
                
                bool wasSneak();
                bool isSneak();
                int getSneak();
                
-               bool wasRun() { return animation_bits[currentanimation] & ab_run; }
-               bool isRun() { return animation_bits[targetanimation] & ab_run; }
+               bool wasRun() { return animation_bits[animCurrent] & ab_run; }
+               bool isRun() { return animation_bits[animTarget] & ab_run; }
                int getRun();
 
-               bool wasLanding() { return animation_bits[currentanimation] & ab_land; }
-               bool isLanding() { return animation_bits[targetanimation] & ab_land; }
+               bool wasLanding() { return animation_bits[animCurrent] & ab_land; }
+               bool isLanding() { return animation_bits[animTarget] & ab_land; }
                int getLanding();
 
-               bool wasLandhard() { return animation_bits[currentanimation] & ab_landhard; }
-               bool isLandhard() { return animation_bits[targetanimation] & ab_landhard; }
+               bool wasLandhard() { return animation_bits[animCurrent] & ab_landhard; }
+               bool isLandhard() { return animation_bits[animTarget] & ab_landhard; }
                int getLandhard();
 
-               bool wasFlip() { return animation_bits[currentanimation] & ab_flip; }
-               bool isFlip() { return animation_bits[targetanimation] & ab_flip; }
+               bool wasFlip() { return animation_bits[animCurrent] & ab_flip; }
+               bool isFlip() { return animation_bits[animTarget] & ab_flip; }
 
-               bool isWallJump() { return animation_bits[targetanimation] & ab_walljump; }
+               bool isWallJump() { return animation_bits[animTarget] & ab_walljump; }
                void Reverse();
                void DoDamage(float howmuch);
                void DoHead();
                void DoMipmaps()
                {
                  skeleton.drawmodel.textureptr.bind();
-          glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
+                 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]);
                }
 
@@ -377,7 +388,6 @@ class Person
                void Puff(int whichlabel);
                void FootLand(int which, float opacity);
                void DoStuff();
-               Joint& getJointFor(int);
                void setAnimation(int);
                void DoAnimations();
                void RagDoll(bool checkcollision);