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