summaryrefslogtreecommitdiffstats
path: root/MatchBloxEngine/MatchBloxEngine/C_MatchBloxEngine.h
blob: f733bcce0cbdb1125c140afedf4778bcc74f724e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#ifndef C_MATCHBLOXENGINE_HEADER_FILE

#define C_MATCHBLOXENGINE_HEADER_FILE

#include "MessageQueue.h"

class C_3DObject;
class C_Block;
class C_Hand;
class C_Log;

typedef enum GameResult
{
  GR_FINISHED,
  GR_BUSY,
  GR_ERROR
} GameResult;

enum EngineState
{
  ES_INITIALISED,
  ES_ERROR,
  ES_GET_READY,    //game initialised, waiting for start signal from player
  ES_PLAYING_GRAB_BLOCK, //no block in hand -> grab floating block
  ES_PLAYING_PUT_BLOCK,  //block in hand -> put block in box
  ES_PAUSED,
  ES_FINISHED
};

class C_MatchBloxEngine
{
  C_MatchBloxEngine(char *f_strModelPath, char *f_strLogFile);
  ~C_MatchBloxEngine();

public:
  GameResult GameStep(msgQueue &f_Queue);
  void Draw(unsigned int f_uiElapsedTime);

  bool NewGame(int f_iUserID, int f_iGameId);
  bool StartGame();
  bool Pause();
  bool Resume();
  bool Abort();

private:
  C_Block     *m_pBlock[4];
  C_Hand      *m_pHand;
  C_3DObject  *m_pHole[4],
              *m_pBox;
  C_Log       *m_pLog;

  EngineState m_State;  
};

#endif //C_MATCHBLOXENGINE_HEADER_FILE