forked from NaiJi/project-kyoku
Implement state machine infrastructure
parent
325d49270d
commit
a0ad8e7ed6
@ -0,0 +1,37 @@
|
||||
#include "gamestate.h"
|
||||
#include "widgets/button.h"
|
||||
#include "widgets/group.h"
|
||||
|
||||
#include "game/game.h"
|
||||
|
||||
GameState::GameState(sf::RenderWindow& game_window, const std::shared_ptr<Game>& game,
|
||||
Callbacks&& callbacks) :
|
||||
_game(game),
|
||||
_game_window(game_window),
|
||||
_onLeaveGameCallback(callbacks.onLeaveGame)
|
||||
{}
|
||||
|
||||
void GameState::input(const sf::Event& event)
|
||||
{
|
||||
_game->input({0, event});
|
||||
}
|
||||
|
||||
void GameState::update()
|
||||
{
|
||||
_game->update();
|
||||
}
|
||||
|
||||
void GameState::draw() const
|
||||
{
|
||||
_game->draw();
|
||||
}
|
||||
|
||||
void GameState::enter()
|
||||
{
|
||||
_game->run();
|
||||
}
|
||||
|
||||
void GameState::leave()
|
||||
{
|
||||
_onLeaveGameCallback();
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
#pragma once
|
||||
|
||||
#include "gui/state.h"
|
||||
#include <SFML/Graphics/RenderWindow.hpp>
|
||||
|
||||
class Group;
|
||||
class Game;
|
||||
|
||||
class GameState : public GUIState
|
||||
{
|
||||
public:
|
||||
|
||||
struct Callbacks
|
||||
{
|
||||
std::function<void(void)> onLeaveGame;
|
||||
};
|
||||
|
||||
|
||||
explicit GameState(sf::RenderWindow& game_window,
|
||||
const std::shared_ptr<Game>& game,
|
||||
Callbacks&& callbacks);
|
||||
|
||||
virtual void input(const sf::Event& event) override;
|
||||
virtual void update() override;
|
||||
virtual void draw() const override;
|
||||
|
||||
virtual void enter() override;
|
||||
virtual void leave() override;
|
||||
|
||||
private:
|
||||
std::shared_ptr<Game> _game;
|
||||
sf::RenderWindow& _game_window;
|
||||
|
||||
std::function<void(void)> _onEnterGameCallback;
|
||||
std::function<void(void)> _onLeaveGameCallback;
|
||||
};
|
||||
|
Loading…
Reference in New Issue