-1

Hello i have problem of undefined base class

enter image description here

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

https://gamedev.stackexchange.com/questions/28931/most-effective-way-to-manage-a-gamestate-system-that-is-easy-to-use

and

http://gamedevgeek.com/tutorials/managing-game-states-in-c/

update

enter image description here

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

1 Answers1

0

include GameEngine.h in base class include GameStateManager.h in Logo.h

looks like header files are not included properly.

Ashu
  • 23
  • 3