#include "application/mainmenu.h" #include "widgets/pushbutton.h" #include "widgets/group.h" MainMenu::MainMenu(const std::shared_ptr& factory, MainMenu::Callbacks&& callbacks) : _callbacks(std::move(callbacks)), _core_factory(factory), _buttons(std::make_shared()) { } void MainMenu::input(const kku::SystemEvent& event) { _buttons->input(event); } void MainMenu::update(const kku::microsec& dt) { _buttons->update(dt); } void MainMenu::display() const { _buttons->display(); } void MainMenu::enter() { const auto render_size = _core_factory->getRenderSize(); const float window_width = render_size.first; const float window_height = render_size.second; auto button_start = std::make_shared("Start", _core_factory, 48); button_start->setRect(kku::Area{window_width / 3.f, window_height / 7.f, window_width / 3.f, window_height / 7.f}); button_start->setCallback(_callbacks.onAppendGameState); auto button_editor = std::make_shared("Editor", _core_factory, 48); button_editor->setRect(kku::Area{window_width / 3.f, window_height / 7.f * 3, window_width / 3.f, window_height / 7.f}); button_editor->setCallback(_callbacks.onAppendEditorState); auto button_about = std::make_shared("About", _core_factory, 48); button_about->setRect(kku::Area{window_width / 3.f, window_height / 7.f * 5, window_width / 3.f, window_height / 7.f}); button_about->setCallback(_callbacks.onAppendAboutState); _buttons->addChild(button_start); _buttons->addChild(button_editor); _buttons->addChild(button_about); _buttons->setVisibility(); } void MainMenu::leave() { _buttons->setVisibility(false); }