OSDN Git Service

[Refactor] カオスパトロンの名称の日英切り替えにLocalizedStringクラスを使用する
authorHabu <habu1010+github@gmail.com>
Tue, 18 Jun 2024 13:58:42 +0000 (22:58 +0900)
committerHabu <habu1010+github@gmail.com>
Thu, 20 Jun 2024 13:29:42 +0000 (22:29 +0900)
src/player/patron.cpp
src/player/patron.h

index 85ef256..7e36b81 100644 (file)
 
 std::vector<Patron> patron_list = {
 
-    Patron(N("スローター", "Slortar"),
+    Patron({ "スローター", "Slortar" },
         { REW_WRATH, REW_CURSE_WP, REW_CURSE_AR, REW_RUIN_ABL, REW_LOSE_ABL, REW_IGNORE, REW_IGNORE, REW_IGNORE, REW_POLY_WND, REW_POLY_SLF, REW_POLY_SLF,
             REW_POLY_SLF, REW_GAIN_ABL, REW_GAIN_ABL, REW_GAIN_EXP, REW_GOOD_OBJ, REW_CHAOS_WP, REW_GREA_OBJ, REW_AUGM_ABL, REW_AUGM_ABL },
         A_CON),
 
-    Patron(N("マベロード", "Mabelode"),
+    Patron({ "マベロード", "Mabelode" },
         { REW_WRATH, REW_CURSE_WP, REW_CURSE_AR, REW_H_SUMMON, REW_SUMMON_M, REW_SUMMON_M, REW_IGNORE, REW_IGNORE, REW_POLY_WND, REW_POLY_WND, REW_POLY_SLF,
             REW_HEAL_FUL, REW_HEAL_FUL, REW_GAIN_ABL, REW_SER_UNDE, REW_CHAOS_WP, REW_GOOD_OBJ, REW_GOOD_OBJ, REW_GOOD_OBS, REW_GOOD_OBS },
         A_CON),
 
-    Patron(N("チャードロス", "Chardros"),
+    Patron({ "チャードロス", "Chardros" },
         { REW_WRATH, REW_WRATH, REW_HURT_LOT, REW_PISS_OFF, REW_H_SUMMON, REW_SUMMON_M, REW_IGNORE, REW_IGNORE, REW_DESTRUCT, REW_SER_UNDE, REW_GENOCIDE,
             REW_MASS_GEN, REW_MASS_GEN, REW_DISPEL_C, REW_GOOD_OBJ, REW_CHAOS_WP, REW_GOOD_OBS, REW_GOOD_OBS, REW_AUGM_ABL, REW_AUGM_ABL },
         A_STR),
 
-    Patron(N("ハイオンハーン", "Hionhurn"),
+    Patron({ "ハイオンハーン", "Hionhurn" },
         { REW_WRATH, REW_WRATH, REW_CURSE_WP, REW_CURSE_AR, REW_RUIN_ABL, REW_IGNORE, REW_IGNORE, REW_SER_UNDE, REW_DESTRUCT, REW_GENOCIDE, REW_MASS_GEN,
             REW_MASS_GEN, REW_HEAL_FUL, REW_GAIN_ABL, REW_GAIN_ABL, REW_CHAOS_WP, REW_GOOD_OBS, REW_GOOD_OBS, REW_AUGM_ABL, REW_AUGM_ABL },
         A_STR),
 
-    Patron(N("キシオムバーグ", "Xiombarg"),
+    Patron({ "キシオムバーグ", "Xiombarg" },
         { REW_TY_CURSE, REW_TY_CURSE, REW_PISS_OFF, REW_RUIN_ABL, REW_LOSE_ABL, REW_IGNORE, REW_POLY_SLF, REW_POLY_SLF, REW_POLY_WND, REW_POLY_WND,
             REW_GENOCIDE, REW_DISPEL_C, REW_GOOD_OBJ, REW_GOOD_OBJ, REW_SER_MONS, REW_GAIN_ABL, REW_CHAOS_WP, REW_GAIN_EXP, REW_AUGM_ABL, REW_GOOD_OBS },
         A_STR),
 
-    Patron(N("ピアレー", "Pyaray"),
+    Patron({ "ピアレー", "Pyaray" },
         { REW_WRATH, REW_TY_CURSE, REW_PISS_OFF, REW_H_SUMMON, REW_H_SUMMON, REW_IGNORE, REW_IGNORE, REW_IGNORE, REW_POLY_WND, REW_POLY_SLF, REW_POLY_SLF,
             REW_SER_DEMO, REW_HEAL_FUL, REW_GAIN_ABL, REW_GAIN_ABL, REW_CHAOS_WP, REW_DO_HAVOC, REW_GOOD_OBJ, REW_GREA_OBJ, REW_GREA_OBS },
         A_INT),
 
-    Patron(N("バラン", "Balaan"),
+    Patron({ "バラン", "Balaan" },
         { REW_TY_CURSE, REW_HURT_LOT, REW_CURSE_WP, REW_CURSE_AR, REW_RUIN_ABL, REW_SUMMON_M, REW_LOSE_EXP, REW_POLY_SLF, REW_POLY_SLF, REW_POLY_WND,
             REW_SER_UNDE, REW_HEAL_FUL, REW_HEAL_FUL, REW_GAIN_EXP, REW_GAIN_EXP, REW_CHAOS_WP, REW_GOOD_OBJ, REW_GOOD_OBS, REW_GREA_OBS, REW_AUGM_ABL },
         A_STR),
 
-    Patron(N("アリオッチ", "Arioch"),
+    Patron({ "アリオッチ", "Arioch" },
         { REW_WRATH, REW_PISS_OFF, REW_RUIN_ABL, REW_LOSE_EXP, REW_H_SUMMON, REW_IGNORE, REW_IGNORE, REW_IGNORE, REW_IGNORE, REW_POLY_SLF, REW_POLY_SLF,
             REW_MASS_GEN, REW_SER_DEMO, REW_HEAL_FUL, REW_CHAOS_WP, REW_CHAOS_WP, REW_GOOD_OBJ, REW_GAIN_EXP, REW_GREA_OBJ, REW_AUGM_ABL },
         A_INT),
 
-    Patron(N("イーカー", "Eequor"),
+    Patron({ "イーカー", "Eequor" },
         { REW_WRATH, REW_TY_CURSE, REW_PISS_OFF, REW_CURSE_WP, REW_RUIN_ABL, REW_IGNORE, REW_IGNORE, REW_POLY_SLF, REW_POLY_SLF, REW_POLY_WND, REW_GOOD_OBJ,
             REW_GOOD_OBJ, REW_SER_MONS, REW_HEAL_FUL, REW_GAIN_EXP, REW_GAIN_ABL, REW_CHAOS_WP, REW_GOOD_OBS, REW_GREA_OBJ, REW_AUGM_ABL },
         A_CON),
 
-    Patron(N("ナージャン", "Narjhan"),
+    Patron({ "ナージャン", "Narjhan" },
         { REW_WRATH, REW_CURSE_AR, REW_CURSE_WP, REW_CURSE_WP, REW_CURSE_AR, REW_IGNORE, REW_IGNORE, REW_IGNORE, REW_POLY_SLF, REW_POLY_SLF, REW_POLY_WND,
             REW_HEAL_FUL, REW_HEAL_FUL, REW_GAIN_EXP, REW_AUGM_ABL, REW_GOOD_OBJ, REW_GOOD_OBJ, REW_CHAOS_WP, REW_GREA_OBJ, REW_GREA_OBS },
         A_CHR),
 
-    Patron(N("バロ", "Balo"),
+    Patron({ "バロ", "Balo" },
         { REW_WRATH, REW_SER_DEMO, REW_CURSE_WP, REW_CURSE_AR, REW_LOSE_EXP, REW_GAIN_ABL, REW_LOSE_ABL, REW_POLY_WND, REW_POLY_SLF, REW_IGNORE, REW_DESTRUCT,
             REW_MASS_GEN, REW_CHAOS_WP, REW_GREA_OBJ, REW_HURT_LOT, REW_AUGM_ABL, REW_RUIN_ABL, REW_H_SUMMON, REW_GREA_OBS, REW_AUGM_ABL },
         A_RANDOM),
 
-    Patron(N("コーン", "Khorne"),
+    Patron({ "コーン", "Khorne" },
         { REW_WRATH, REW_HURT_LOT, REW_HURT_LOT, REW_H_SUMMON, REW_H_SUMMON, REW_IGNORE, REW_IGNORE, REW_IGNORE, REW_SER_MONS, REW_SER_DEMO, REW_POLY_SLF,
             REW_POLY_WND, REW_HEAL_FUL, REW_GOOD_OBJ, REW_GOOD_OBJ, REW_CHAOS_WP, REW_GOOD_OBS, REW_GOOD_OBS, REW_GREA_OBJ, REW_GREA_OBS },
         A_STR),
 
-    Patron(N("スラーネッシュ", "Slaanesh"),
+    Patron({ "スラーネッシュ", "Slaanesh" },
         { REW_WRATH, REW_PISS_OFF, REW_PISS_OFF, REW_RUIN_ABL, REW_LOSE_ABL, REW_LOSE_EXP, REW_IGNORE, REW_IGNORE, REW_POLY_WND, REW_SER_DEMO, REW_POLY_SLF,
             REW_HEAL_FUL, REW_HEAL_FUL, REW_GOOD_OBJ, REW_GAIN_EXP, REW_GAIN_EXP, REW_CHAOS_WP, REW_GAIN_ABL, REW_GREA_OBJ, REW_AUGM_ABL },
         A_CHR),
 
-    Patron(N("ナーグル", "Nurgle"),
+    Patron({ "ナーグル", "Nurgle" },
         { REW_WRATH, REW_PISS_OFF, REW_HURT_LOT, REW_RUIN_ABL, REW_LOSE_ABL, REW_LOSE_EXP, REW_IGNORE, REW_IGNORE, REW_IGNORE, REW_POLY_SLF, REW_POLY_SLF,
             REW_POLY_WND, REW_HEAL_FUL, REW_GOOD_OBJ, REW_GAIN_ABL, REW_GAIN_ABL, REW_SER_UNDE, REW_CHAOS_WP, REW_GREA_OBJ, REW_AUGM_ABL },
         A_CON),
 
-    Patron(N("ティーンチ", "Tzeentch"),
+    Patron({ "ティーンチ", "Tzeentch" },
         { REW_WRATH, REW_CURSE_WP, REW_CURSE_AR, REW_RUIN_ABL, REW_LOSE_ABL, REW_LOSE_EXP, REW_IGNORE, REW_POLY_SLF, REW_POLY_SLF, REW_POLY_SLF, REW_POLY_SLF,
             REW_POLY_WND, REW_HEAL_FUL, REW_CHAOS_WP, REW_GREA_OBJ, REW_GAIN_ABL, REW_GAIN_ABL, REW_GAIN_EXP, REW_GAIN_EXP, REW_AUGM_ABL },
         A_INT),
 
-    Patron(N("カイン", "Khaine"),
+    Patron({ "カイン", "Khaine" },
         { REW_WRATH, REW_HURT_LOT, REW_PISS_OFF, REW_LOSE_ABL, REW_LOSE_EXP, REW_IGNORE, REW_IGNORE, REW_DISPEL_C, REW_DO_HAVOC, REW_DO_HAVOC, REW_POLY_SLF,
             REW_POLY_SLF, REW_GAIN_EXP, REW_GAIN_ABL, REW_GAIN_ABL, REW_SER_MONS, REW_GOOD_OBJ, REW_CHAOS_WP, REW_GREA_OBJ, REW_GOOD_OBS },
         A_STR),
 
 };
 
-#ifdef JP
-Patron::Patron(const char *name, const char *ename, std::vector<patron_reward> reward_table, const player_ability_type boost_stat)
-#else
-Patron::Patron(const char *name, std::vector<patron_reward> reward_table, player_ability_type boost_stat)
-#endif
-    : name(name)
-#ifdef JP
-    , ename(ename)
-#endif
+Patron::Patron(LocalizedString &&name, std::vector<patron_reward> reward_table, const player_ability_type boost_stat)
+    : name(std::move(name))
     , reward_table(std::move(reward_table))
     , boost_stat(boost_stat)
 {
@@ -173,8 +166,7 @@ void Patron::gain_level_reward(PlayerType *player_ptr_, int chosen_reward)
     }
     type--;
 
-    std::string wrath_reason = _(this->name, "the Wrath of ");
-    wrath_reason.append(_("の怒り", this->name));
+    const auto wrath_reason = format(_("%sの怒り", "the Wrath of %s"), this->name.data());
 
     effect = this->reward_table[type];
 
index 34cf72f..6e306a1 100644 (file)
@@ -1,5 +1,6 @@
 #pragma once
 
+#include "locale/localized-string.h"
 #include "system/angband.h"
 #include <string>
 #include <vector>
@@ -54,13 +55,8 @@ enum player_ability_type : int;
  */
 class Patron {
 public:
-    std::string name; //!< パトロン名
-#ifdef JP
-    std::string ename; //!< PatronName
-    Patron(const char *name, const char *ename, std::vector<patron_reward> reward_table, const player_ability_type boost_stat);
-#else
-    Patron(const char *name, std::vector<patron_reward> reward_table, const player_ability_type boost_stat);
-#endif
+    LocalizedString name; //!< パトロン名
+    Patron(LocalizedString &&name, std::vector<patron_reward> reward_table, const player_ability_type boost_stat);
 
     // @note C4458 クラスメンバーの隠蔽 への対応として末尾に「_」を付ける.
     void gain_level_reward(PlayerType *player_ptr_, int chosen_reward);