You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
project-kyoku/src/application/gamestate.cpp

45 lines
1.0 KiB
C++

#include "gamestate.h"
#include "widgets/button.h"
#include "widgets/group.h"
#include "core/game.h"
GameState::GameState(const std::shared_ptr<Game>& game, Callbacks&& callbacks) :
_game(game),
_onLeaveGameCallback(callbacks.onLeaveGame)
{}
void GameState::input(const sf::Event& event)
{
if (event.key.code == sf::Keyboard::Space && event.type == sf::Event::KeyReleased)
_music.isPaused() ? _music.play() : _music.pause();
_game->input(PlayerInput{_music.fetchOffset(), event});
}
void GameState::update(const sf::Time& dt)
{
_game->update(UpdateData{_music.fetchOffset(), dt});
}
void GameState::draw(sf::RenderTarget &target, sf::RenderStates states) const
{
(void)target; (void)states;
_game->display();
}
void GameState::enter(sf::Vector2u&& render_size)
{
(void)render_size; // We will need this later when I add UI to game state
_game->run();
_music.openFromFile("METEOR.flac");
_music.setVolume(10);
_music.play();
}
void GameState::leave()
{
_onLeaveGameCallback();
}