OSDN Git Service

[Refactor] #1473 Defined enum class RevengeType to simplify continue_revenge()
authorHourier <grapefox.whitelucifer.0408@gmail.com>
Sun, 12 Sep 2021 01:51:08 +0000 (10:51 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Tue, 14 Sep 2021 14:07:49 +0000 (23:07 +0900)
src/realm/realm-hex.cpp
src/spell-realm/spells-hex.cpp
src/spell-realm/spells-hex.h
src/window/main-window-stat-poster.cpp

index f3e161e..9ba62e4 100644 (file)
@@ -292,7 +292,7 @@ concptr do_hex_spell(player_type *player_ptr, spell_hex_type spell, spell_type m
                 return nullptr;
             }
 
-            spell_hex.set_revenge_type(1);
+            spell_hex.set_revenge_type(SpellHexRevengeType::PATIENCE);
             spell_hex.set_revenge_turn(r, true);
             spell_hex.set_revenge_power(0, true);
             msg_print(_("じっと耐えることにした。", "You decide to endure damage for future retribution."));
@@ -312,7 +312,7 @@ concptr do_hex_spell(player_type *player_ptr, spell_hex_type spell, spell_type m
                     msg_format(_("%d点のダメージを返した。", "You return %d damage."), power);
                 }
 
-                spell_hex.set_revenge_type(0);
+                spell_hex.set_revenge_type(SpellHexRevengeType::NONE);
                 spell_hex.set_revenge_turn(0, true);
                 spell_hex.set_revenge_power(0, true);
             }
@@ -863,7 +863,7 @@ concptr do_hex_spell(player_type *player_ptr, spell_hex_type spell, spell_type m
                 return nullptr;
             }
 
-            spell_hex.set_revenge_type(2);
+            spell_hex.set_revenge_type(SpellHexRevengeType::REVENGE);
             spell_hex.set_revenge_turn(r, true);
             msg_format(_("あなたは復讐を宣告した。あと %d ターン。", "You declare your revenge. %d turns left."), r);
             add = false;
index 5932a62..d1e688f 100644 (file)
@@ -340,10 +340,10 @@ void SpellHex::continue_revenge()
     }
 
     switch (this->get_revenge_type()) {
-    case 1:
+    case SpellHexRevengeType::PATIENCE:
         exe_spell(this->player_ptr, REALM_HEX, HEX_PATIENCE, SPELL_CONT);
         return;
-    case 2:
+    case SpellHexRevengeType::REVENGE:
         exe_spell(this->player_ptr, REALM_HEX, HEX_REVENGE, SPELL_CONT);
         return;
     default:
@@ -502,12 +502,12 @@ void SpellHex::set_revenge_turn(byte turn, bool substitution)
     }
 }
 
-byte SpellHex::get_revenge_type() const
+SpellHexRevengeType SpellHex::get_revenge_type() const
 {
-    return this->player_ptr->magic_num2[1];
+    return static_cast <SpellHexRevengeType>(this->player_ptr->magic_num2[1]);
 }
 
-void SpellHex::set_revenge_type(byte type)
+void SpellHex::set_revenge_type(SpellHexRevengeType type)
 {
-    this->player_ptr->magic_num2[1] = type;
+    this->player_ptr->magic_num2[1] = enum2i(type);
 }
index 10a005b..6d4102a 100644 (file)
@@ -3,6 +3,12 @@
 #include "system/angband.h"
 #include "realm/realm-hex-numbers.h"
 
+enum class SpellHexRevengeType : byte {
+    NONE = 0,
+    PATIENCE = 1,
+    REVENGE = 2,
+};
+
 struct monap_type;
 struct player_type;
 class SpellHex {
@@ -31,8 +37,8 @@ public:
     void set_revenge_power(int32_t power, bool substitution);
     byte get_revenge_turn() const;
     void set_revenge_turn(byte power, bool substitution);
-    byte get_revenge_type() const;
-    void set_revenge_type(byte type);
+    SpellHexRevengeType get_revenge_type() const;
+    void set_revenge_type(SpellHexRevengeType type);
 
 private:
     player_type *player_ptr;
index b60da11..3041e7f 100644 (file)
@@ -446,11 +446,11 @@ static void add_hex_status_flags(player_type *player_ptr, BIT_FLAGS *bar_flags)
 
     if (spell_hex.get_revenge_turn() > 0) {
         auto revenge_type = spell_hex.get_revenge_type();
-        if (revenge_type == 1) {
+        if (revenge_type == SpellHexRevengeType::PATIENCE) {
             ADD_BAR_FLAG(BAR_PATIENCE);
         }
 
-        if (revenge_type == 2) {
+        if (revenge_type == SpellHexRevengeType::REVENGE) {
             ADD_BAR_FLAG(BAR_REVENGE);
         }
     }