55 lines
1.3 KiB
C++
55 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include <psemek/app/scene.hpp>
|
|
|
|
#include <psemek/ui/controller.hpp>
|
|
|
|
#include <psemek/util/clock.hpp>
|
|
|
|
namespace psemek::app
|
|
{
|
|
|
|
struct ui_scene
|
|
: scene_base
|
|
{
|
|
ui_scene(ui::controller & controller);
|
|
|
|
void on_scene_enter(app * parent) override;
|
|
void on_scene_exit() override;
|
|
|
|
void on_resize(int width, int height) override;
|
|
|
|
void on_mouse_move(int x, int y, int dx, int dy) override;
|
|
void on_mouse_wheel(int delta) override;
|
|
void on_left_button_down() override;
|
|
void on_left_button_up() override;
|
|
void on_middle_button_down() override;
|
|
void on_middle_button_up() override;
|
|
void on_right_button_down() override;
|
|
void on_right_button_up() override;
|
|
|
|
void on_key_down(SDL_Keycode key) override;
|
|
void on_key_up(SDL_Keycode key) override;
|
|
|
|
void on_text_input(std::string_view text) override;
|
|
|
|
void update() override;
|
|
void present() override;
|
|
|
|
ui::controller & controller() const { return controller_; }
|
|
|
|
protected:
|
|
|
|
std::optional<std::size_t> max_events_per_frame_ = 64;
|
|
|
|
std::shared_ptr<ui::element> get_ui() { return ui_; }
|
|
void set_ui(std::shared_ptr<ui::element> ui);
|
|
|
|
private:
|
|
ui::controller & controller_;
|
|
std::shared_ptr<ui::element> ui_;
|
|
|
|
util::clock<std::chrono::duration<float>, std::chrono::high_resolution_clock> update_clock_;
|
|
};
|
|
|
|
}
|