Added FSM and Game State Manager
This commit is contained in:
95
src/game/GameStateManager.cpp
Normal file
95
src/game/GameStateManager.cpp
Normal file
@@ -0,0 +1,95 @@
|
||||
#include <assert.h>
|
||||
#include "GameStateManager.h"
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
void GameStateManager::AdvanceState()
|
||||
{
|
||||
//given the AdvanceState event transition to a new state based on current state and gameData
|
||||
BEGIN_TRANSITION_MAP // (Next State) // - Current State -
|
||||
TRANSITION_MAP_ENTRY (ST_TITLESCREEN) // ST_Init
|
||||
TRANSITION_MAP_ENTRY (ST_COREGAME) // ST_TitleScreen
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_Instructions
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_HiScoreList
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_Credits
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_CoreGame
|
||||
TRANSITION_MAP_ENTRY (ST_COREGAME) // ST_PauseScreen
|
||||
TRANSITION_MAP_ENTRY (ST_INIT) // ST_GameOver
|
||||
END_TRANSITION_MAP(NULL)
|
||||
}
|
||||
|
||||
void GameStateManager::PauseGame(GameData* gameData)
|
||||
{
|
||||
// given the PauseGame event transition to a new state based on current state and gameData
|
||||
// printf("gameData->isPaused: %d\n",gameData->isPaused);
|
||||
BEGIN_TRANSITION_MAP // - Current State -
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_Init
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_TitleScreen
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_Instructions
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_HiScoreList
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_Credits
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_CoreGame
|
||||
TRANSITION_MAP_ENTRY (ST_INSTRUCTIONS) // ST_PauseScreen
|
||||
TRANSITION_MAP_ENTRY (CANNOT_HAPPEN) // ST_GameOver
|
||||
END_TRANSITION_MAP(gameData)
|
||||
|
||||
}
|
||||
void GameStateManager::GameOver()
|
||||
{
|
||||
//given the PauseGame event transition to a new state based on current state and gameData
|
||||
// printf("GameOver triggered\n");
|
||||
BEGIN_TRANSITION_MAP // - Current State -
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_Init
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_TitleScreen
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_Instructions
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_HiScoreList
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_Credits
|
||||
TRANSITION_MAP_ENTRY (ST_GAMEOVER) // ST_CoreGame
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_PauseScreen
|
||||
TRANSITION_MAP_ENTRY (EVENT_IGNORED) // ST_GameOver
|
||||
END_TRANSITION_MAP(NULL)
|
||||
}
|
||||
|
||||
void GameStateManager::ST_Init(EventData*)
|
||||
{
|
||||
printf("GameStateManager::ST_Init\n");
|
||||
// InternalEvent(ST_TITLESCREEN);
|
||||
}
|
||||
|
||||
void GameStateManager::ST_TitleScreen(EventData*)
|
||||
{
|
||||
printf("GameStateManager::ST_TitleScreen\n");
|
||||
// InternalEvent(ST_TITLESCREEN);
|
||||
}
|
||||
|
||||
void GameStateManager::ST_Instructions(GameData*)
|
||||
{
|
||||
printf("GameStateManager::ST_Instructions\n");
|
||||
}
|
||||
|
||||
void GameStateManager::ST_HiScoreList(GameData*)
|
||||
{
|
||||
printf("GameStateManager::ST_HiScoreList\n");
|
||||
}
|
||||
|
||||
void GameStateManager::ST_Credits(GameData*)
|
||||
{
|
||||
printf("GameStateManager::ST_Credits\n");
|
||||
}
|
||||
|
||||
void GameStateManager::ST_CoreGame(EventData*)
|
||||
{
|
||||
printf("GameStateManager::ST_CoreGame\n");
|
||||
}
|
||||
|
||||
void GameStateManager::ST_PauseScreen(EventData*)
|
||||
{
|
||||
printf("GameStateManager::ST_PauseScreen\n");
|
||||
}
|
||||
|
||||
void GameStateManager::ST_GameOver(GameData*)
|
||||
{
|
||||
printf("GameStateManager::ST_GameOver\n");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user