#ifndef __STATES__BASE_STATE_H__
#define __STATES__BASE_STATE_H__

#include <SDL2/SDL.h>
#include <string>

class Engine; // Forward declaration

class BaseState
{
public:
    virtual ~BaseState() = default;
    
    virtual void Enter(Engine& engine) {};
    virtual void Exit(Engine& engine) {};
    virtual void HandleEvents(Engine& engine, SDL_Event& e) = 0;
    virtual void Update(Engine& engine, float dt) = 0;
    virtual void Render(Engine& engine) = 0;
    virtual void RenderImGui(Engine& engine) {};
    virtual std::string GetName() const = 0;

private:

};

#endif