From: Hourier Date: Sun, 12 Sep 2021 01:51:08 +0000 (+0900) Subject: [Refactor] #1473 Defined enum class RevengeType to simplify continue_revenge() X-Git-Tag: vmacos3.0.0-alpha52~101^2~2^2~4 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=3876047db3ae7b6eadda2be547d867a7684ec75c;p=hengbandforosx%2Fhengbandosx.git [Refactor] #1473 Defined enum class RevengeType to simplify continue_revenge() --- diff --git a/src/realm/realm-hex.cpp b/src/realm/realm-hex.cpp index f3e161ef7..9ba62e474 100644 --- a/src/realm/realm-hex.cpp +++ b/src/realm/realm-hex.cpp @@ -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; diff --git a/src/spell-realm/spells-hex.cpp b/src/spell-realm/spells-hex.cpp index 5932a6216..d1e688f63 100644 --- a/src/spell-realm/spells-hex.cpp +++ b/src/spell-realm/spells-hex.cpp @@ -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 (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); } diff --git a/src/spell-realm/spells-hex.h b/src/spell-realm/spells-hex.h index 10a005bc6..6d4102ae8 100644 --- a/src/spell-realm/spells-hex.h +++ b/src/spell-realm/spells-hex.h @@ -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; diff --git a/src/window/main-window-stat-poster.cpp b/src/window/main-window-stat-poster.cpp index b60da118d..3041e7f3c 100644 --- a/src/window/main-window-stat-poster.cpp +++ b/src/window/main-window-stat-poster.cpp @@ -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); } }