1 /*************************************************************************** 2 StateBehavior.h - description 3 ------------------- 4 begin : Thu Feb 24 2002 5 copyright : (C) 2001 by Henrik Enqvist 6 email : henqvist@excite.com 7 ***************************************************************************/ 8 9 10 #ifndef STATEBEHAVIOR_H 11 #define STATEBEHAVIOR_H 12 13 #include "Behavior.h" 14 #include "StateMachine.h" 15 16 class Light; 17 18 /** A state in the a StateBehavior object. */ 19 class StateItem { 20 public: 21 StateItem(); 22 ~StateItem(); setMoveSteps(int steps)23 void setMoveSteps(int steps) { m_iMoveSteps = steps; }; 24 void setTr(float x, float y, float z); 25 void setRot(float x, float y, float z); 26 void addTexCoord(float u, float v); setUserProperty(int p)27 void setUserProperty(int p) { m_iUserProperty = p; }; setShapeProperty(int p)28 void setShapeProperty(int p) { m_iShapeProperty = p; }; setLight(bool b)29 void setLight(bool b) { m_bLight = b; }; setSound(int s)30 void setSound(int s) { m_iSound = s; }; setMusic(int m)31 void setMusic(int m) { m_iMusic = m; }; setDelayState(int state,int delay)32 void setDelayState(int state, int delay) { m_iDelayState = state; m_iDelay = delay; }; setCollState(int state)33 void setCollState(int state) { m_iCollState = state; }; setActSig(int s)34 void setActSig(int s) { m_iActSig = s; }; setCollSig(int s)35 void setCollSig(int s) { m_iCollSig = s; }; setSigDelay(int d)36 void setSigDelay(int d) { m_iSigDelay = d; }; 37 void addShapeEnable(int i, bool e); 38 getUserProperty()39 int getUserProperty() { return m_iUserProperty; } getShapeProperty()40 int getShapeProperty() { return m_iShapeProperty; } getLight()41 bool getLight() { return m_bLight; }; getSound()42 int getSound() { return m_iSound; }; getMusic()43 int getMusic() { return m_iMusic; }; getDelay()44 int getDelay() { return m_iDelay; }; getDelayState()45 int getDelayState() { return m_iDelayState; }; getCollState()46 int getCollState() { return m_iCollState; }; getActSig()47 int getActSig() { return m_iActSig; }; getCollSig()48 int getCollSig() { return m_iCollSig; }; getSigDelay()49 int getSigDelay() { return m_iSigDelay; }; 50 bool getShapeEnable(int i); 51 52 int m_iActSig; 53 int m_iCollSig; 54 int m_iSigDelay; 55 bool m_bLight; 56 int m_iMoveSteps; 57 Vertex3D m_vtxTr; 58 Vertex3D m_vtxRot; 59 //float m_fTrSpeed; 60 //float m_fRotSpeed; 61 vector<TexCoord> m_vTexCoord; 62 vector<bool> m_vShapeEnable; 63 int m_iUserProperty; 64 int m_iShapeProperty; 65 int m_iMusic; 66 int m_iSound; 67 int m_iDelay; 68 int m_iTick; 69 int m_iDelayState; 70 int m_iCollState; 71 }; 72 73 /** A statemachine. Create StateItems and insert them into this behavior. */ 74 class StateBehavior : public Behavior { 75 public: 76 StateBehavior(); 77 ~StateBehavior(); 78 void onTick(); 79 void StdOnSignal(); 80 void StdOnCollision(); useMove(bool t)81 void useMove(bool t) { m_bMove = t; }; usesMove()82 bool usesMove() { return m_bMove; }; useTexCoord(bool t)83 void useTexCoord(bool t) { m_bTexCoord = t; }; usesTexCoord()84 bool usesTexCoord() { return m_bTexCoord; }; useShape(bool t)85 void useShape(bool t) { m_bShape = t; }; usesShape()86 bool usesShape() { return m_bShape; }; 87 //void useProperty(bool t) { m_bProperty = t; }; 88 void addStateItem(StateItem * s); 89 void removeStateItem(StateItem * s); 90 StateItem * getStateItem(int i); getOwnerBall()91 int getOwnerBall() { return m_iOwnerBall; }; 92 void setState(StateItem* s); 93 private: 94 int m_iOwnerBall; 95 int m_iTick; 96 int m_iCollisionSafe; 97 Vertex3D m_vtxTr; 98 Vertex3D m_vtxRot; 99 //bool m_bProperty; 100 bool m_bTexCoord; 101 bool m_bMove; 102 bool m_bShape; 103 StateItem* p_CurrentStateItem; 104 vector<StateItem*> m_vStateItem; 105 }; 106 107 #endif 108