OSDN Git Service

[Refactor] format 関数の戻り値を std::string にする
[hengbandforosx/hengbandosx.git] / src / io-dump / character-dump.cpp
index 0044ba5..cf0b113 100644 (file)
@@ -1,16 +1,13 @@
-#include <string>
-
+#include "io-dump/character-dump.h"
 #include "artifact/fixed-art-types.h"
 #include "avatar/avatar.h"
 #include "cmd-building/cmd-building.h"
-#include "dungeon/dungeon.h"
 #include "dungeon/quest.h"
 #include "flavor/flavor-describer.h"
 #include "floor/floor-town.h"
 #include "game-option/birth-options.h"
 #include "game-option/game-play-options.h"
 #include "inventory/inventory-slot-types.h"
-#include "io-dump/character-dump.h"
 #include "io-dump/player-status-dump.h"
 #include "io-dump/special-class-dump.h"
 #include "io/mutations-dump.h"
 #include "store/store.h"
 #include "system/angband-version.h"
 #include "system/building-type-definition.h"
+#include "system/dungeon-info.h"
 #include "system/floor-type-definition.h"
-#include "system/monster-race-definition.h"
-#include "system/monster-type-definition.h"
-#include "system/object-type-definition.h"
+#include "system/item-entity.h"
+#include "system/monster-entity.h"
+#include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "term/z-form.h"
 #include "util/enum-converter.h"
 #include "util/int-char-converter.h"
 #include "util/sort.h"
+#include "util/string-processor.h"
 #include "view/display-messages.h"
 #include "world/world.h"
-
 #include <numeric>
+#include <string>
 
 /*!
  * @brief プレイヤーのペット情報をファイルにダンプする
@@ -61,10 +61,10 @@ static void dump_aux_pet(PlayerType *player_ptr, FILE *fff)
     for (int i = player_ptr->current_floor_ptr->m_max - 1; i >= 1; i--) {
         auto *m_ptr = &player_ptr->current_floor_ptr->m_list[i];
 
-        if (!monster_is_valid(m_ptr)) {
+        if (!m_ptr->is_valid()) {
             continue;
         }
-        if (!is_pet(m_ptr)) {
+        if (!m_ptr->is_pet()) {
             continue;
         }
         pet_settings = true;
@@ -167,7 +167,7 @@ static void dump_aux_last_message(PlayerType *player_ptr, FILE *fff)
 static void dump_aux_recall(FILE *fff)
 {
     fprintf(fff, _("\n  [帰還場所]\n\n", "\n  [Recall Depth]\n\n"));
-    for (const auto &d_ref : d_info) {
+    for (const auto &d_ref : dungeons_info) {
         bool seiha = false;
 
         if (d_ref.idx == 0 || !d_ref.maxdepth) {
@@ -177,14 +177,14 @@ static void dump_aux_recall(FILE *fff)
             continue;
         }
         if (MonsterRace(d_ref.final_guardian).is_valid()) {
-            if (!r_info[d_ref.final_guardian].max_num) {
+            if (!monraces_info[d_ref.final_guardian].max_num) {
                 seiha = true;
             }
         } else if (max_dlv[d_ref.idx] == d_ref.maxdepth) {
             seiha = true;
         }
 
-        fprintf(fff, _("   %c%-12s: %3d 階\n", "   %c%-16s: level %3d\n"), seiha ? '!' : ' ', d_ref.name.c_str(), (int)max_dlv[d_ref.idx]);
+        fprintf(fff, _("   %c%-12s: %3d 階\n", "   %c%-16s: level %3d\n"), seiha ? '!' : ' ', d_ref.name.data(), (int)max_dlv[d_ref.idx]);
     }
 }
 
@@ -267,9 +267,9 @@ static void dump_aux_arena(PlayerType *player_ptr, FILE *fff)
         } else {
 #ifdef JP
             fprintf(
-                fff, "\n 闘技場: %d回戦で%sの前に敗北\n", -player_ptr->arena_number, r_info[arena_info[-1 - player_ptr->arena_number].r_idx].name.c_str());
+                fff, "\n 闘技場: %d回戦で%sの前に敗北\n", -player_ptr->arena_number, monraces_info[arena_info[-1 - player_ptr->arena_number].r_idx].name.data());
 #else
-            fprintf(fff, "\n Arena: Defeated by %s in the %d%s fight\n", r_info[arena_info[-1 - player_ptr->arena_number].r_idx].name.c_str(),
+            fprintf(fff, "\n Arena: Defeated by %s in the %d%s fight\n", monraces_info[arena_info[-1 - player_ptr->arena_number].r_idx].name.data(),
                 -player_ptr->arena_number, get_ordinal_number_suffix(-player_ptr->arena_number));
 #endif
         }
@@ -313,7 +313,7 @@ static void dump_aux_monsters(PlayerType *player_ptr, FILE *fff)
 
     /* Count monster kills */
     auto norm_total = 0;
-    for (const auto &[r_idx, r_ref] : r_info) {
+    for (const auto &[r_idx, r_ref] : monraces_info) {
         /* Ignore unused index */
         if (!MonsterRace(r_ref.idx).is_valid() || r_ref.name.empty()) {
             continue;
@@ -367,15 +367,19 @@ static void dump_aux_monsters(PlayerType *player_ptr, FILE *fff)
 
     char buf[80];
     for (auto it = who.rbegin(); it != who.rend() && std::distance(who.rbegin(), it) < 10; it++) {
-        auto *r_ptr = &r_info[*it];
+        auto *r_ptr = &monraces_info[*it];
         if (r_ptr->defeat_level && r_ptr->defeat_time) {
-            sprintf(buf, _(" - レベル%2d - %d:%02d:%02d", " - level %2d - %d:%02d:%02d"), r_ptr->defeat_level, r_ptr->defeat_time / (60 * 60),
+            strnfmt(buf, sizeof(buf), _(" - レベル%2d - %d:%02d:%02d", " - level %2d - %d:%02d:%02d"), r_ptr->defeat_level, r_ptr->defeat_time / (60 * 60),
                 (r_ptr->defeat_time / 60) % 60, r_ptr->defeat_time % 60);
         } else {
             buf[0] = '\0';
         }
 
-        fprintf(fff, _("  %-40s (レベル%3d)%s\n", "  %-40s (level %3d)%s\n"), r_ptr->name.c_str(), (int)r_ptr->level, buf);
+        auto name = str_separate(r_ptr->name, 40);
+        fprintf(fff, _("  %-40s (レベル%3d)%s\n", "  %-40s (level %3d)%s\n"), name.front().data(), (int)r_ptr->level, buf);
+        for (auto i = 1U; i < name.size(); ++i) {
+            fprintf(fff, "  %s\n", name[i].data());
+        }
     }
 }
 
@@ -468,7 +472,7 @@ static void dump_aux_virtues(PlayerType *player_ptr, FILE *fff)
     }
 
     std::string alg = PlayerAlignment(player_ptr).get_alignment_description();
-    fprintf(fff, _("\n属性 : %s\n", "\nYour alignment : %s\n"), alg.c_str());
+    fprintf(fff, _("\n属性 : %s\n", "\nYour alignment : %s\n"), alg.data());
     fprintf(fff, "\n");
     dump_virtues(player_ptr, fff);
 }
@@ -511,7 +515,7 @@ static void dump_aux_equipment_inventory(PlayerType *player_ptr, FILE *fff)
     fprintf(fff, _("  [キャラクタの持ち物]\n\n", "  [Character Inventory]\n\n"));
 
     for (int i = 0; i < INVEN_PACK; i++) {
-        if (!player_ptr->inventory_list[i].k_idx) {
+        if (!player_ptr->inventory_list[i].bi_id) {
             break;
         }
         describe_flavor(player_ptr, o_name, &player_ptr->inventory_list[i], 0);
@@ -556,19 +560,11 @@ static void dump_aux_home_museum(PlayerType *player_ptr, FILE *fff)
 
     TERM_LEN x = 1;
     for (int i = 0; i < store_ptr->stock_num; i++) {
-#ifdef JP
         if ((i % 12) == 0) {
-            fprintf(fff, "\n ( %d ページ )\n", x++);
+            fprintf(fff, _("\n ( %d ページ )\n", "\n ( page %d )\n"), x++);
         }
         describe_flavor(player_ptr, o_name, &store_ptr->stock[i], 0);
         fprintf(fff, "%c) %s\n", I2A(i % 12), o_name);
-#else
-        if ((i % 12) == 0) {
-            fprintf(fff, "\n ( page %d )\n", x++);
-        }
-        describe_flavor(player_ptr, o_name, &st_ptr->stock[i], 0);
-        fprintf(fff, "%c) %s\n", I2A(i % 12), o_name);
-#endif
     }
 
     fprintf(fff, "\n\n");
@@ -578,10 +574,11 @@ static void dump_aux_home_museum(PlayerType *player_ptr, FILE *fff)
  * @brief チェックサム情報を出力 / Get check sum in string form
  * @return チェックサム情報の文字列
  */
-static concptr get_check_sum(void)
+static std::string get_check_sum(void)
 {
-    return format("%02x%02x%02x%02x%02x%02x%02x%02x%02x", f_head.checksum, k_head.checksum, a_head.checksum, e_head.checksum, r_head.checksum, d_head.checksum,
-        m_head.checksum, s_head.checksum, v_head.checksum);
+    return format("%02x%02x%02x%02x%02x%02x%02x%02x%02x", terrains_header.checksum, baseitems_header.checksum,
+        artifacts_header.checksum, egos_header.checksum, monraces_header.checksum, dungeons_header.checksum,
+        class_magics_header.checksum, class_skills_header.checksum, vaults_header.checksum);
 }
 
 /*!
@@ -614,5 +611,5 @@ void make_character_dump(PlayerType *player_ptr, FILE *fff)
     dump_aux_equipment_inventory(player_ptr, fff);
     dump_aux_home_museum(player_ptr, fff);
 
-    fprintf(fff, _("  [チェックサム: \"%s\"]\n\n", "  [Check Sum: \"%s\"]\n\n"), get_check_sum());
+    fprintf(fff, _("  [チェックサム: \"%s\"]\n\n", "  [Check Sum: \"%s\"]\n\n"), get_check_sum().data());
 }