From 624d5be3d2f472d277859eb1d272dc9a985f06ff Mon Sep 17 00:00:00 2001 From: Trihedraf Date: Sun, 22 Jan 2023 03:38:15 -0800 Subject: [PATCH] make Floating Numbers an enum for random, vertical or off --- Source/options.cpp | 7 ++++++- Source/options.h | 11 ++++++++++- Source/qol/floatingnumbers.cpp | 13 +++++++++---- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/Source/options.cpp b/Source/options.cpp index 6e4ff0442..7dec540a0 100644 --- a/Source/options.cpp +++ b/Source/options.cpp @@ -1025,7 +1025,12 @@ GameplayOptions::GameplayOptions() , numFullManaPotionPickup("Full Mana Potion Pickup", OptionEntryFlags::None, N_("Full Mana Potion Pickup"), N_("Number of Full Mana potions to pick up automatically."), 0, { 0, 1, 2, 4, 8, 16 }) , numRejuPotionPickup("Rejuvenation Potion Pickup", OptionEntryFlags::None, N_("Rejuvenation Potion Pickup"), N_("Number of Rejuvenation potions to pick up automatically."), 0, { 0, 1, 2, 4, 8, 16 }) , numFullRejuPotionPickup("Full Rejuvenation Potion Pickup", OptionEntryFlags::None, N_("Full Rejuvenation Potion Pickup"), N_("Number of Full Rejuvenation potions to pick up automatically."), 0, { 0, 1, 2, 4, 8, 16 }) - , enableFloatingNumbers("Enable floating numbers", OptionEntryFlags::None, "Enable floating numbers", N_("Enables floating numbers on gaining XP / dealing damage etc."), false) + , enableFloatingNumbers("Enable floating numbers", OptionEntryFlags::None, N_("Enable floating numbers"), N_("Enables floating numbers on gaining XP / dealing damage etc."), FloatingNumbers::Off, + { + { FloatingNumbers::Off, N_("Off") }, + { FloatingNumbers::Random, N_("Random Angles") }, + { FloatingNumbers::Vertical, N_("Vertical Only") }, + }) { grabInput.SetValueChangedCallback(OptionGrabInputChanged); experienceBar.SetValueChangedCallback(OptionExperienceBarChanged); diff --git a/Source/options.h b/Source/options.h index 8f770ffd7..9617ec851 100644 --- a/Source/options.h +++ b/Source/options.h @@ -61,6 +61,15 @@ enum class Resampler : uint8_t { string_view ResamplerToString(Resampler resampler); std::optional ResamplerFromString(string_view resampler); +enum class FloatingNumbers : uint8_t { + /** @brief Show no floating numbers. */ + Off = 0, + /** @brief Show floating numbers at random angles. */ + Random = 1, + /** @brief Show floating numbers vertically only. */ + Vertical = 2, +}; + enum class OptionEntryType : uint8_t { Boolean, List, @@ -584,7 +593,7 @@ struct GameplayOptions : OptionCategoryBase { /** @brief Number of Full Rejuvenating potions to pick up automatically */ OptionEntryInt numFullRejuPotionPickup; /** @brief Enable floating numbers. */ - OptionEntryBoolean enableFloatingNumbers; + OptionEntryEnum enableFloatingNumbers; }; struct ControllerOptions : OptionCategoryBase { diff --git a/Source/qol/floatingnumbers.cpp b/Source/qol/floatingnumbers.cpp index 6de8a445d..ade0ca1fa 100644 --- a/Source/qol/floatingnumbers.cpp +++ b/Source/qol/floatingnumbers.cpp @@ -97,7 +97,12 @@ void AddFloatingNumber(Point pos, Displacement offset, DamageType type, int valu { -100, -100 }, }; - Displacement endOffset = goodAngles[rand() % 3]; + Displacement endOffset; + if (*sgOptions.Gameplay.enableFloatingNumbers == FloatingNumbers::Random) { + endOffset = goodAngles[rand() % 3]; + } else if (*sgOptions.Gameplay.enableFloatingNumbers == FloatingNumbers::Vertical) { + endOffset = goodAngles[0]; + } if (damageToPlayer) endOffset = -endOffset; @@ -121,7 +126,7 @@ void AddFloatingNumber(Point pos, Displacement offset, DamageType type, int valu void AddFloatingNumber(DamageType damageType, const Monster &monster, int damage) { - if (!*sgOptions.Gameplay.enableFloatingNumbers) + if (*sgOptions.Gameplay.enableFloatingNumbers == FloatingNumbers::Off) return; Displacement offset = {}; @@ -144,7 +149,7 @@ void AddFloatingNumber(DamageType damageType, const Monster &monster, int damage void AddFloatingNumber(DamageType damageType, const Player &player, int damage) { - if (!*sgOptions.Gameplay.enableFloatingNumbers) + if (*sgOptions.Gameplay.enableFloatingNumbers == FloatingNumbers::Off) return; Displacement offset = {}; @@ -163,7 +168,7 @@ void AddFloatingNumber(DamageType damageType, const Player &player, int damage) void DrawFloatingNumbers(const Surface &out, Point viewPosition, Displacement offset) { - if (!*sgOptions.Gameplay.enableFloatingNumbers) + if (*sgOptions.Gameplay.enableFloatingNumbers == FloatingNumbers::Off) return; for (auto &floatingNum : FloatingQueue) {