/****************************************************************************
 Header file for Gamestate Module
 ****************************************************************************/
#ifndef SMGameState_H
#define SMGameState_H

// Event Definitions
#include "SMEvents.h"

// Children includes
#include "SMGameplay.h"
#include "SMDrivetrain.h"
#include "SMSensors.h"

// typedefs for the states
typedef enum { Game_Paused, Game_On } GameState_t ;

// Public Function Prototypes

//State machine functions
Event_t RunGameSM( Event_t CurrentEvent );
void StartGameSM ( Event_t CurrentEvent );
GameState_t QueryGameSM ( void );

//other functions
/****************************************************************************
 Function
 QueryGameStartFlag

 Returns
 1 if StartFlag set, 0 otherwise

 Description
 indicates whether we need to transition to Game_On state.
 ****************************************************************************/
unsigned char QueryGameStartFlag(void);

/****************************************************************************
 Function
 QueryGamePauseFlag

 Returns
 1 if PauseFlag set, 0 otherwise

 Description
 indicates whether we need to transition to Game_paused state.
 ****************************************************************************/
unsigned char QueryGamePauseFlag(void);

/****************************************************************************
 Function
 QueryGameTime

 Returns
 unsigned int - time passed while game was in state Game_On, in 10s of ms.

 Description
 Returns value of game timer, in 10s of ms.
 ****************************************************************************/
unsigned int QueryGameTime(void);

#endif /*SMGameState_H */