diff options
| author | Hannes Schulze <haschu0103@outlook.de> | 2025-02-07 22:15:57 +0100 |
|---|---|---|
| committer | Hannes Schulze <haschu0103@outlook.de> | 2025-02-07 22:15:57 +0100 |
| commit | 0de4957a22dd408793d0526351bcb7d61786fe86 (patch) | |
| tree | 3160c72a45022b1e0b7e5ab928c690e85e20cded /app/sdl/state.hh | |
| parent | a6bfb14562982c8c0139566e5a9b3051543791c4 (diff) | |
add sdl implementation
Diffstat (limited to 'app/sdl/state.hh')
| -rw-r--r-- | app/sdl/state.hh | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/app/sdl/state.hh b/app/sdl/state.hh new file mode 100644 index 0000000..f67a5f9 --- /dev/null +++ b/app/sdl/state.hh @@ -0,0 +1,37 @@ +#pragma once + +#include "nes/common/status.hh" +#include "nes/app/application.hh" +#include "impl/display-sdl.hh" +#include "impl/input-device-keyboard-sdl.hh" +#include "impl/file-browser-posix.hh" +#include <chrono> +#include <optional> + +#include <SDL3/SDL.h> + +namespace nes::app::sdl +{ + /// Manages the SDL application lifecycle. + class state + { + status status_{ status::success }; + SDL_Window* window_{ nullptr }; + SDL_Renderer* renderer_{ nullptr }; + SDL_Texture* texture_{ nullptr }; + std::optional<std::chrono::steady_clock::time_point> last_time_point_; + display_sdl display_; + input_device_keyboard_sdl keyboard_; + file_browser_posix file_browser_; + application application_; + + public: + explicit state(); + ~state(); + + auto get_status() const -> status { return status_; } + + auto handle_event(SDL_Event* event) -> void; + auto handle_iterate() -> void; + }; +} // namespace nes::app::sdl |
