Added FSM and Game State Manager

This commit is contained in:
2021-02-15 21:10:18 -05:00
parent 78629be4d8
commit e4de32f9f7
8 changed files with 315 additions and 2 deletions

View 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");
}