From 3fbfa26dd3602edd0c550d254d961cc42009f191 Mon Sep 17 00:00:00 2001 From: ZehMatt Date: Thu, 22 Jul 2021 20:22:47 +0300 Subject: [PATCH] Use EnumMap for Cursors string lookup --- src/openrct2/interface/Cursors.cpp | 62 +++++++++++++++--------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/src/openrct2/interface/Cursors.cpp b/src/openrct2/interface/Cursors.cpp index 01054812f3..5bf0051d46 100644 --- a/src/openrct2/interface/Cursors.cpp +++ b/src/openrct2/interface/Cursors.cpp @@ -9,43 +9,45 @@ #include "Cursors.h" +#include "../core/EnumMap.hpp" + #include -#include namespace Cursor { + static const EnumMap LookupTable{ + { "CURSOR_BLANK", CursorID::Blank }, + { "CURSOR_UP_ARROW", CursorID::UpArrow }, + { "CURSOR_UP_DOWN_ARROW", CursorID::UpDownArrow }, + { "CURSOR_HAND_POINT", CursorID::HandPoint }, + { "CURSOR_ZZZ", CursorID::ZZZ }, + { "CURSOR_DIAGONAL_ARROWS", CursorID::DiagonalArrows }, + { "CURSOR_PICKER", CursorID::Picker }, + { "CURSOR_TREE_DOWN", CursorID::TreeDown }, + { "CURSOR_FOUNTAIN_DOWN", CursorID::FountainDown }, + { "CURSOR_STATUE_DOWN", CursorID::StatueDown }, + { "CURSOR_BENCH_DOWN", CursorID::BenchDown }, + { "CURSOR_CROSS_HAIR", CursorID::CrossHair }, + { "CURSOR_BIN_DOWN", CursorID::BinDown }, + { "CURSOR_LAMPPOST_DOWN", CursorID::LamppostDown }, + { "CURSOR_FENCE_DOWN", CursorID::FenceDown }, + { "CURSOR_FLOWER_DOWN", CursorID::FlowerDown }, + { "CURSOR_PATH_DOWN", CursorID::PathDown }, + { "CURSOR_DIG_DOWN", CursorID::DigDown }, + { "CURSOR_WATER_DOWN", CursorID::WaterDown }, + { "CURSOR_HOUSE_DOWN", CursorID::HouseDown }, + { "CURSOR_VOLCANO_DOWN", CursorID::VolcanoDown }, + { "CURSOR_WALK_DOWN", CursorID::WalkDown }, + { "CURSOR_PAINT_DOWN", CursorID::PaintDown }, + { "CURSOR_ENTRANCE_DOWN", CursorID::EntranceDown }, + { "CURSOR_HAND_OPEN", CursorID::HandOpen }, + { "CURSOR_HAND_CLOSED", CursorID::HandClosed }, + { "CURSOR_ARROW", CursorID::Arrow }, + }; + CursorID FromString(const std::string& s, CursorID defaultValue) { assert(defaultValue != CursorID::Undefined); - static const std::unordered_map LookupTable{ - { "CURSOR_BLANK", CursorID::Blank }, - { "CURSOR_UP_ARROW", CursorID::UpArrow }, - { "CURSOR_UP_DOWN_ARROW", CursorID::UpDownArrow }, - { "CURSOR_HAND_POINT", CursorID::HandPoint }, - { "CURSOR_ZZZ", CursorID::ZZZ }, - { "CURSOR_DIAGONAL_ARROWS", CursorID::DiagonalArrows }, - { "CURSOR_PICKER", CursorID::Picker }, - { "CURSOR_TREE_DOWN", CursorID::TreeDown }, - { "CURSOR_FOUNTAIN_DOWN", CursorID::FountainDown }, - { "CURSOR_STATUE_DOWN", CursorID::StatueDown }, - { "CURSOR_BENCH_DOWN", CursorID::BenchDown }, - { "CURSOR_CROSS_HAIR", CursorID::CrossHair }, - { "CURSOR_BIN_DOWN", CursorID::BinDown }, - { "CURSOR_LAMPPOST_DOWN", CursorID::LamppostDown }, - { "CURSOR_FENCE_DOWN", CursorID::FenceDown }, - { "CURSOR_FLOWER_DOWN", CursorID::FlowerDown }, - { "CURSOR_PATH_DOWN", CursorID::PathDown }, - { "CURSOR_DIG_DOWN", CursorID::DigDown }, - { "CURSOR_WATER_DOWN", CursorID::WaterDown }, - { "CURSOR_HOUSE_DOWN", CursorID::HouseDown }, - { "CURSOR_VOLCANO_DOWN", CursorID::VolcanoDown }, - { "CURSOR_WALK_DOWN", CursorID::WalkDown }, - { "CURSOR_PAINT_DOWN", CursorID::PaintDown }, - { "CURSOR_ENTRANCE_DOWN", CursorID::EntranceDown }, - { "CURSOR_HAND_OPEN", CursorID::HandOpen }, - { "CURSOR_HAND_CLOSED", CursorID::HandClosed }, - { "CURSOR_ARROW", CursorID::Arrow }, - }; auto result = LookupTable.find(s); return (result != LookupTable.end()) ? result->second : defaultValue;