diff options
Diffstat (limited to 'lib/nes/app/ui/screen-title.cc')
| -rw-r--r-- | lib/nes/app/ui/screen-title.cc | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/lib/nes/app/ui/screen-title.cc b/lib/nes/app/ui/screen-title.cc index f1e4f98..5a2f757 100644 --- a/lib/nes/app/ui/screen-title.cc +++ b/lib/nes/app/ui/screen-title.cc @@ -2,7 +2,6 @@ #include "nes/app/graphics/renderer.hh" #include "nes/app/graphics/color.hh" #include "nes/app/graphics/tiles/banner.hh" -#include "nes/app/graphics/tiles/icons.hh" #include "nes/app/input/input-manager.hh" namespace nes::app @@ -15,17 +14,35 @@ namespace nes::app auto screen_title::render(renderer& renderer) -> void { renderer.render_fill(color::background_primary); - renderer.render_text(10, 16, "Hello, world!", color::foreground_primary); - renderer.render_mask_tile(14, 18, tiles::icon_directory, color::accent_primary); - renderer.render_mask_tile(16, 18, tiles::icon_cartridge, color::accent_primary); renderer.render_image(2, 4, tiles::banner); + + if (selected_item_ == item::load_game) { renderer.render_text(10, 16, ">", color::accent_primary); } + renderer.render_text(12, 16, "Load Game", selected_item_ == item::load_game ? color::accent_primary : color::foreground_primary); + + if (selected_item_ == item::settings) { renderer.render_text(10, 19, ">", color::accent_primary); } + renderer.render_text(12, 19, "Settings", selected_item_ == item::settings ? color::accent_primary : color::foreground_primary); + + if (selected_item_ == item::help) { renderer.render_text(10, 22, ">", color::accent_primary); } + renderer.render_text(12, 22, "Help", selected_item_ == item::help ? color::accent_primary : color::foreground_primary); } auto screen_title::process_events() -> action { - if (input_manager_.get_keyboard().read_key_start()) + while (auto event = input_manager_.get_keyboard().poll_event()) { - return action::load_game; + if (event == input_event::key_down(key::space)) + { + switch (selected_item_) + { + case item::load_game: selected_item_ = item::settings; break; + case item::settings: selected_item_ = item::help; break; + case item::help: selected_item_ = item::load_game; break; + } + } + else if (event == input_event::key_down(key::enter)) + { + return action::load_game; + } } return action::none; |
