#pragma once
#include "scene.hpp"
#include "UI/menu.hpp"
//! сцена выбора игрока и уровня сложности
class Scene_select: public Scene {
protected:
  Menu menu = {};
  bool ifSelected = false; ///< if 1, item selected
public:
  explicit Scene_select(Scene *pv = nullptr);
  ~Scene_select() { a83::log("exit from scene SELECT"); }
  void draw() override;
  void update(float dt) override {
    input();
    if (ifSelected) {
      menu.accept();
      ifSelected = false;
    }
    Scene::update(dt);
  }
private:
  void input();
  nocopy(Scene_select);
};
Scene_select::Scene_select(Scene *pv): Scene(pv) {
  a83::log("goto scene SELECT");
  // player image TODO
  menu.add(new item_difficulty(U"Difficulty ", &Game::difficulty, []()->bool {
    Game::scene_state.push(scene_st::GAME);
    Game::scene_state.push(scene_st::LOADING);
    return false; }));
  menu.add(new item_text(U"Back ", []()->bool {
    Game::scene_state.push(scene_st::PREV);
    return false; }));
  menu.init(5,20, 160,60, 5,5, 10);
}
void Scene_select::input() {
  if (Game::menu_press(KEY_ESCAPE)) set_scene(scene_st::PREV); // выйти назад
  if (Game::menu_press(KEY_UP)) menu.up();
  if (Game::menu_press(KEY_DOWN)) menu.down();
  if (Game::menu_press(KEY_LEFT)) menu.param_plus();
  if (Game::menu_press(KEY_RIGHT)) menu.param_sub();
  // выбираем чё-нидь, когда будет в upd, выполнит действия из лябмд
  if (Game::menu_press(KEY_ENABLE)) ifSelected = true;
}

void Scene_select::draw() {
  Game::screen.clear(); // фон чёрный
  menu.print(Game::screen);
}