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