#ifndef MENU_UI_HPP
#define MENU_UI_HPP

#include "godot_cpp/classes/control.hpp"
#include <godot_cpp/classes/canvas_layer.hpp>
#include <godot_cpp/classes/node3d.hpp>
#include <godot_cpp/classes/packed_scene.hpp>

namespace godot {
//! The main menu UI parent.
class MenuUI : public CanvasLayer {
    GDCLASS(MenuUI, CanvasLayer);
    static void _bind_methods();
public:
    //! Register listeners with UI action observers. Get the controls panel child and hide it.
    virtual void _ready() override;
    //! Load the game scene. Listener for start button "button_down" observer.
    void start_game();
    //! Show the controls screen. Listener for controls button "button_down" observer.
    void toggle_controls();
    //! The scene to load when the start button is pressed.
    void set_game_scene(Ref<PackedScene> scene);
    //! The scene to load when the start button is pressed.
    Ref<PackedScene> get_game_scene() const;
private:
    Control *controls{nullptr};
    Ref<PackedScene> game_scene{};
};
}

#endif // !MENU_UI_HPP
