From 0f22ed2ef160eef2da6080782943b22c9539650d Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Sun, 2 Feb 2025 22:49:01 +0100 Subject: wip: hacky file browser --- lib/nes/app/ui/action.hh | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) (limited to 'lib/nes/app/ui/action.hh') diff --git a/lib/nes/app/ui/action.hh b/lib/nes/app/ui/action.hh index 52e5ba6..b701606 100644 --- a/lib/nes/app/ui/action.hh +++ b/lib/nes/app/ui/action.hh @@ -1,15 +1,44 @@ #pragma once +#include + namespace nes::app { /// An action for the application to process after a scene has handled its events. - enum class action + class action { - none, - go_to_title, - go_to_browser, - go_to_settings, - go_to_help, - launch_game, + public: + enum class type + { + none, + go_to_title, + go_to_browser, + go_to_settings, + go_to_help, + launch_game, + }; + + private: + type type_{ type::none }; + std::string_view file_name_; + + public: + explicit action() = default; + + static auto go_to_title() -> action { return action{ type::go_to_title, "" }; } + static auto go_to_browser() -> action { return action{ type::go_to_browser, "" }; } + static auto go_to_settings() -> action { return action{ type::go_to_settings, "" }; } + static auto go_to_help() -> action { return action{ type::go_to_help, "" }; } + static auto launch_game(std::string_view const file_name) -> action { return action{ type::launch_game, file_name }; } + + auto get_type() const -> type { return type_; } + auto get_file_name() const -> std::string_view { return file_name_; } + + private: + explicit action(type const type, std::string_view const file_name) + : type_{ type } + , file_name_{ file_name } + { + } }; } // namespace nes::app \ No newline at end of file -- cgit v1.3.1