//!@file сцена главного меню
#pragma once
#include "scene.hpp"
#include "UI/menu.hpp"
//! сцена меню игры
class Scene_menu : public Scene {
protected:
  Menu menu = {};
  bool ifSelected = false; ///< if 1, item selected
public:
  nocopy(Scene_menu);
  explicit Scene_menu(Scene *pv = nullptr);
  ~Scene_menu() { a83::log("exit from scene MENU"); }
  void draw() override;
  void update(float dt) override {
    input();
    if (ifSelected) {
      menu.accept();
      ifSelected = false;
    }
    Scene::update(dt);
  }
private:
  void input();
};
Scene_menu::Scene_menu(Scene *pv): Scene(pv) {
  a83::log("goto scene MENU");
  // TODO localization
  menu.add(new item_text(U"Start", []()->bool {
    Game::scene_state.push(scene_st::SELECT);
    return false;
  }));
  menu.add(new item_text(U"Options", []()->bool {
    Game::scene_state.push(scene_st::OPTIONS);
    return false;
  }));
  menu.add(new item_text(U"Info")); // TODO
  menu.add(new item_text(U"Exit", []()->bool {
    Game::scene_state.push(scene_st::END);
    return false;
  }));
  menu.init(5,20, 160,60, 5,5, 7);
}
void Scene_menu::input() {
  if (Game::menu_press(KEY_UP))
    menu.up();
  if (Game::menu_press(KEY_DOWN))
    menu.down();
  // выбираем чё-нидь:
  if (Game::menu_press(KEY_ENABLE)) {
	// когда будет в upd, выполнит действия из лябмд
    ifSelected = true;
  } // enter
}

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