From 7ff31951b24937db90c5e7635c477240bfc69336 Mon Sep 17 00:00:00 2001 From: przemek83 <4788832+przemek83@users.noreply.github.com> Date: Fri, 13 Sep 2024 17:22:03 +0200 Subject: [PATCH] Some simplifications in Menu class. --- src/Menu.cpp | 30 +++++++++++++++++++----------- src/Menu.h | 4 ++++ src/ResourceType.h | 2 +- src/Resources.h | 2 +- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/Menu.cpp b/src/Menu.cpp index a1738ec..9c654fa 100644 --- a/src/Menu.cpp +++ b/src/Menu.cpp @@ -78,6 +78,9 @@ std::pair Menu::playGame() case UserChoice::LEVEL_4: Screen::hideMouse(); return {true, Level::LEVEL_4}; + + default: + break; } } } @@ -93,7 +96,7 @@ Menu::UserChoice Menu::getUserChoice() return UserChoice::EXIT; if (action == InputAction::ACCEPT) - return items_[currentItem].second; + return items_[static_cast(currentItem)].second; if (action == InputAction::BACK) return items_[items_.size() - 1].second; @@ -106,21 +109,26 @@ Menu::UserChoice Menu::getUserChoice() } } -void Menu::drawMenuItems(int currentItem) +void Menu::drawMenuItem(int item, ResourceType resource) { const auto itemHeight{static_cast(getItemHeight())}; + const auto [itemX, itemY]{getItemPosition(item)}; + screen_.drawScaledBitmap(resource, itemX, itemY, getItemWidth(), + getItemHeight()); + const auto itemMiddleY{itemY + static_cast(itemHeight / 2.F)}; + screen_.drawText(screen_.getCenterX(), itemMiddleY, + items_[static_cast(item)].first); +} + +void Menu::drawMenuItems(int currentItem) +{ for (int item = 0; item < static_cast(items_.size()); ++item) { - ResourceType itemResource{ResourceType::MENU_ITEM}; + ResourceType resource{ResourceType::MENU_ITEM}; if (item == currentItem) - itemResource = ResourceType::MENU_ITME_SELECTED; - - const auto [itemX, itemY]{getItemPosition(item)}; - screen_.drawScaledBitmap(itemResource, itemX, itemY, getItemWidth(), - getItemHeight()); - const auto itemMiddleY{itemY + static_cast(itemHeight / 2.F)}; - screen_.drawText(screen_.getCenterX(), itemMiddleY, - items_[static_cast(item)].first); + resource = ResourceType::MENU_ITEM_SELECTED; + + drawMenuItem(item, resource); } } diff --git a/src/Menu.h b/src/Menu.h index 2f7c64e..1d1c35b 100644 --- a/src/Menu.h +++ b/src/Menu.h @@ -3,6 +3,8 @@ #include #include +#include "ResourceType.h" + class Screen; enum class InputAction : char; enum class Level : char; @@ -30,6 +32,8 @@ class Menu final EXIT }; + void drawMenuItem(int item, ResourceType resource); + void drawMenuItems(int currentItem); int getCurrentItem(std::pair mousePosition, InputAction action, diff --git a/src/ResourceType.h b/src/ResourceType.h index 3a9befe..4c145f0 100644 --- a/src/ResourceType.h +++ b/src/ResourceType.h @@ -4,7 +4,7 @@ enum class ResourceType : char { BACKGROUND = 0, MENU_ITEM, - MENU_ITME_SELECTED, + MENU_ITEM_SELECTED, PLAIN, BRICK, WATER, diff --git a/src/Resources.h b/src/Resources.h index 2ffc2c1..61862fc 100644 --- a/src/Resources.h +++ b/src/Resources.h @@ -28,7 +28,7 @@ class Resources std::unordered_map resourcePaths_{ {ResourceType::BACKGROUND, "image/menu/background.bmp"}, {ResourceType::MENU_ITEM, "image/menu/item.tga"}, - {ResourceType::MENU_ITME_SELECTED, "image/menu/item_select.tga"}, + {ResourceType::MENU_ITEM_SELECTED, "image/menu/item_select.tga"}, {ResourceType::PLAIN, "image/board/plain.tga"}, {ResourceType::BRICK, "image/board/brick.tga"}, {ResourceType::WATER, "image/board/water.tga"},