X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FPerson.h;h=dcf3b21f377a263cb341fb08c8baacb3b68c0238;hb=b17ec650f79ea8efbfda00ae93bd82434fcea686;hp=9c6ebe968a31ad5222e299ff3165fa567ae3be24;hpb=9e06cb73424ca3f0eb971350c5dfb3cdaec0d5bf;p=lugaru.git diff --git a/Source/Person.h b/Source/Person.h index 9c6ebe9..dcf3b21 100644 --- a/Source/Person.h +++ b/Source/Person.h @@ -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; @@ -118,7 +124,8 @@ class Person float damagetolerance; float damage; float permanentdamage; - float superpermanentdamage; float lastcollide; + float superpermanentdamage; + float lastcollide; int dead; float jumppower; @@ -190,7 +197,8 @@ class Person bool loaded; bool whichdirection; float whichdirectiondelay; - bool avoidsomething; XYZ avoidwhere; + bool avoidsomething; + XYZ avoidwhere; float blooddimamount; float staggerdelay; @@ -250,7 +258,8 @@ class Person bool bled; bool spurt; bool onfire; - float onfiredelay; float burnt; + float onfiredelay; + float burnt; float fireduration; float flamedelay; @@ -293,7 +302,8 @@ class Person float lastchecktime; float stunned; float surprised; - float runninghowlong; int lastoccluded; + float runninghowlong; + int lastoccluded; int laststanding; int escapednum; @@ -312,112 +322,65 @@ class Person float occluded; + bool jumpclimb; + + + + // 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 jumpclimb; + 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() { - glBindTexture(GL_TEXTURE_2D, skeleton.drawmodel.textureptr); - gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, - skeleton.skinsize, - skeleton.skinsize, - GL_RGB, GL_UNSIGNED_BYTE, - &skeleton.skinText[0]); + 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); @@ -425,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);