Hello i have problem of undefined base class
here is my header file for base and inheritance
base class
#pragma once
#include "GameStateManager.h"
class GameEngine;
class GameStateManager;
struct tagMSG;
class GameState
{
public:
GameState() {}
virtual ~GameState() {}
virtual void Enter(GameEngine *) = 0;
virtual void Update(tagMSG& msg, GameStateManager* game) =0;
virtual void Exit() = 0;
};
derived class
#pragma once
#include "GameEngine.h"
#include "GameState.h"
#include "MainMenu.h"
class Logo :public GameState
{
public:
Logo();
~Logo();
void Enter(GameEngine * engine);
void Update(tagMSG& msg, GameStateManager* game);
void Exit();
private:
float timer;
GameEngine * m_GameEngine_Info;
SceneActor * blackscreen;
SceneActor * digipen_logo;
SceneActor * team_logo;
};
gamestate manager
#include "Logo.h"
#include "MainMenu.h"
#include "Level.h"
class GameState;
class GameStateManager
{
public:
GameStateManager(GameEngine* engine);
~GameStateManager();
void Cleanup();
void ChangeState(std::string state);
void Update(tagMSG & msg);
bool Running() { return m_running; }
void Quit();
private:
std::unordered_map<std::string, GameState *> states;
GameState * current_state;
bool m_running;
GameEngine * m_engine;
};
i was trying to do game state for my game engine,reference with this
and
http://gamedevgeek.com/tutorials/managing-game-states-in-c/
update
1 of the error in "game->ChangeState("mainmenu")"
void Logo::Update(tagMSG& msg, GameStateManager* game)
{
m_GameEngine_Info->Update(msg);
if (m_GameEngine_Info->InputCheckTriggered(CVK_ESC))
{
timer = 0.0f;
}
while (timer >= 0.0f)
{
if (timer <= 0.1f)
{
game->ChangeState("mainmenu");
}
else if (timer <= 5.0f)
{
if (team_logo != nullptr)
team_logo->SetOnlyActive(true);
if (digipen_logo != nullptr)
digipen_logo->SetOnlyActive(false);
}
--timer;
}
}
the change state function, states is a unordermap current_state is GameState *
void GameStateManager::ChangeState(std::string state)
{
current_state->Exit();
current_state = states.find(state)->second;
current_state->Enter(m_engine);
}