Player.cs 11.53 KiB
#include "SelectState.h"
#include "../../../workdir/config.h"
SelectState::SelectState(IStateManager& state_manager,
                         const sf::VideoMode& video_mode,
                         const std::string& window_title) :
        IState(state_manager), IWindowKeeper(video_mode, window_title), m_menu(state_manager) {}
void SelectState::event_handling() {
    sf::Event event;
    while (m_window.pollEvent(event)) {
        if (event.type == sf::Event::Closed) {
            m_state_manager.set_next_state(std::make_unique<ExitState>(m_state_manager));
            break;
void SelectState::update() {
    const sf::Vector2f pos = m_window.mapPixelToCoords(sf::Mouse::getPosition(m_window));
    if (sf::Mouse::isButtonPressed(sf::Mouse::Left)) {
        m_menu.process_mouse(pos, true);
        return;
    m_menu.process_mouse(pos, false);
void SelectState::render() {
    m_window.clear(config::SELECT_LEVEL_BACKGROUND_COLOR);
    m_menu.draw_into(m_window);
    m_window.display();
bool SelectState::do_step() {
    event_handling();
    update();
    render();
    return true;