DUDE.H
上传用户:abcdshs
上传日期:2007-01-07
资源大小:1858k
文件大小:3k
源码类别:

游戏

开发平台:

Visual C++

  1. // (C) Copyright 1996 by Anthony J. Carin.  All Rights Reserved.
  2. #ifndef DUDE_H
  3. #define DUDE_H
  4. #include "baseobj.h"
  5. #include "attach.h"
  6. #include "arm.h"
  7. #include "leg.h"
  8. #include "head.h"
  9. #include "personal.h"
  10. #include "weapon.h"
  11. extern CString& getpath(CString& filename);
  12. class antagonist;
  13. class dude : public baseobject
  14. {
  15. public:
  16.    dude(personal *p);
  17.   ~dude();
  18. virtual void setto(view& v);
  19. virtual void draw();
  20. virtual void followcommands(command& c);
  21. virtual void shirtcolor(COLORREF c);
  22. virtual void pantscolor(COLORREF c);
  23. virtual void skincolor(COLORREF c);
  24. virtual void haircolor(COLORREF c) { c = c; }
  25. virtual void takedamage(float v);
  26.         void ResetHealth()  { m_health = 100; }
  27.         CString& normalpunch()         { return getpath(m_personal.normalpunch()); }
  28.         CString& personalpunch()       { return m_personal.punchlist(); }
  29.         void righthandhold(baseobject *base) { releaserightweapon(); rightweapon = base; }
  30.         void lefthandhold(baseobject *base)  { releaseleftweapon(); leftweapon  = base; }
  31.         char isdead()   { return (char) (m_health == 0); }
  32.         void pickup();
  33.         CString& filepath() { return m_personal.filepath(); }
  34.         char ismale()       { return (char) (m_personal.gender() == MALE); }
  35.         char RightHandEmpty()   { return (char)(rightweapon == 0); }
  36.         char LeftHandEmpty()    { return (char)(leftweapon == 0); }
  37.         WeaponType RightHandWeaponType()    { return (WeaponType)((handheld*)rightweapon)->NumType(); }
  38.         WeaponType LeftHandWeaponType()     { return (WeaponType)((handheld*)leftweapon)->NumType(); }
  39. protected:
  40. virtual void  tiltright(float v);
  41. virtual void  tiltleft(float v);
  42. virtual void  tiltfoward(float v);
  43. virtual void  tiltbackward(float v);
  44. virtual void  turnleft(float v);
  45. virtual void  turnright(float v);
  46. virtual void  moveupward(float v);
  47. virtual void  movefoward(float v);
  48. virtual void  movebackward(float v);
  49. virtual void  clear();
  50. virtual void  personaleffect();
  51.         void  setpersonal(personal& p) { m_personal = p; }
  52.         void  releaserightweapon();
  53.         void  releaseleftweapon();
  54.         view& righthandloc()  { return rightarm->handloc(); }
  55.         view& lefthandloc()   { return leftarm->handloc(); }
  56.         baseobject *rightweapon;
  57.         baseobject *leftweapon;
  58.         direction   rightweapontilt;
  59.         direction   leftweapontilt;
  60.         totalarm   *rightarm;
  61.         totalarm   *leftarm;
  62.         totalleg   *rightleg;
  63.         totalleg   *leftleg;
  64.         attachment *neck;
  65.         head       *m_head;
  66.         personal    m_personal;
  67.         short       m_health;
  68. private:
  69.         void  checkifgothit(instruction& inst);
  70.         antagonist *findtarget();
  71.         char  inrange(view& v);
  72.         float hightlevel;
  73. };
  74. inline void dude::tiltright(float v)
  75. {
  76.    m_view.setzdir((direction) (TC_PI*v));
  77. }
  78. inline void dude::tiltleft(float v)
  79. {
  80.    m_view.setzdir((direction) (-TC_PI*v));
  81. }
  82. inline void dude::tiltfoward(float v)
  83. {
  84.    m_view.setxdir((direction) (TC_PI*v));
  85. }
  86. inline void dude::tiltbackward(float v)
  87. {
  88.    m_view.setxdir((direction) (-TC_PI*v));
  89. }
  90. inline void dude::turnleft(float v)
  91. {
  92.    m_view.setydir(m_view.ydirection() + (direction) (TC_PI*v));
  93. }
  94. inline void dude::turnright(float v)
  95. {
  96.    m_view.setydir(m_view.ydirection() - (direction) (TC_PI*v));
  97. }
  98. #endif