OSDN Git Service

[Refactor] #40236 Separated knowledge-uniques.c/h from cmd-dump.c
authorHourier <hourier@users.sourceforge.jp>
Thu, 23 Apr 2020 13:50:08 +0000 (22:50 +0900)
committerHourier <hourier@users.sourceforge.jp>
Thu, 23 Apr 2020 13:50:08 +0000 (22:50 +0900)
Hengband_vcs2017/Hengband/Hengband.vcxproj
Hengband_vcs2017/Hengband/Hengband.vcxproj.filters
src/Makefile.am
src/cmd/cmd-dump.c
src/knowledge/knowledge-uniques.c [new file with mode: 0644]
src/knowledge/knowledge-uniques.h [new file with mode: 0644]

index 6b9a891..74daa2c 100644 (file)
     <ClCompile Include="..\..\src\cmd\cmd-process-screen.c" />\r
     <ClCompile Include="..\..\src\cmd\dump-util.c" />\r
     <ClCompile Include="..\..\src\knowledge\knowledge-artifacts.c" />\r
+    <ClCompile Include="..\..\src\knowledge\knowledge-uniques.c" />\r
     <ClCompile Include="..\..\src\main\music-definitions-table.c" />\r
     <ClCompile Include="..\..\src\main\sound-definitions-table.c" />\r
     <ClCompile Include="..\..\src\market\building.c" />\r
     <ClInclude Include="..\..\src\cmd\cmd-process-screen.h" />\r
     <ClInclude Include="..\..\src\cmd\dump-util.h" />\r
     <ClInclude Include="..\..\src\knowledge\knowledge-artifacts.h" />\r
+    <ClInclude Include="..\..\src\knowledge\knowledge-uniques.h" />\r
     <ClInclude Include="..\..\src\main\music-definitions-table.h" />\r
     <ClInclude Include="..\..\src\main\sound-definitions-table.h" />\r
     <ClInclude Include="..\..\src\market\building.h" />\r
index e6f22b8..0925ad1 100644 (file)
     <ClCompile Include="..\..\src\knowledge\knowledge-artifacts.c">
       <Filter>knowledge</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\knowledge\knowledge-uniques.c">
+      <Filter>knowledge</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\src\gamevalue.h" />
     <ClInclude Include="..\..\src\knowledge\knowledge-artifacts.h">
       <Filter>knowledge</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\knowledge\knowledge-uniques.h">
+      <Filter>knowledge</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <None Include="..\..\src\wall.bmp" />
index b7b332c..fb8480b 100644 (file)
@@ -149,6 +149,7 @@ hengband_SOURCES = \
        z-virt.c z-virt.h \
        \
        knowledge/knowledge-artifacts.c knowledge/knowledge-artifacts.h \
+       knowledge/knowledge-uniques.c knowledge/knowledge-uniques.h \
        \
        cmd/dump-util.c cmd/dump-util.h cmd/feeling-table.c cmd/feeling-table.h \
        cmd/monster-group-table.c cmd/monster-group-table.h \
index e6da889..1e3b9bf 100644 (file)
@@ -44,6 +44,7 @@
 #include "io/interpret-pref-file.h"
 
 #include "knowledge/knowledge-artifacts.h"
+#include "knowledge/knowledge-uniques.h"
 
 #include "autopick.h"
 #include "birth.h"
@@ -569,96 +570,6 @@ static FEAT_IDX collect_features(FEAT_IDX *feat_idx, BIT_FLAGS8 mode)
 
 
 /*
- * Display known uniques
- * With "XTRA HACK UNIQHIST" (Originally from XAngband)
- */
-static void do_cmd_knowledge_uniques(player_type *creature_ptr)
-{
-       u16b why = 2;
-       IDX *who;
-       int n_alive[10];
-       int n_alive_surface = 0;
-       int n_alive_over100 = 0;
-       int n_alive_total = 0;
-       int max_lev = -1;
-       for (IDX i = 0; i < 10; i++)
-               n_alive[i] = 0;
-
-       FILE *fff = NULL;
-       GAME_TEXT file_name[FILE_NAME_SIZE];
-       if (!open_temporary_file(&fff, file_name)) return;
-
-       C_MAKE(who, max_r_idx, MONRACE_IDX);
-       int n = 0;
-       for (IDX i = 1; i < max_r_idx; i++)
-       {
-               monster_race *r_ptr = &r_info[i];
-               if (!r_ptr->name) continue;
-               if (!(r_ptr->flags1 & RF1_UNIQUE)) continue;
-               if (!cheat_know && !r_ptr->r_sights) continue;
-               if (!r_ptr->rarity || ((r_ptr->rarity > 100) && !(r_ptr->flags1 & RF1_QUESTOR))) continue;
-               if (r_ptr->max_num == 0) continue;
-
-               if (r_ptr->level)
-               {
-                       int lev = (r_ptr->level - 1) / 10;
-                       if (lev < 10)
-                       {
-                               n_alive[lev]++;
-                               if (max_lev < lev) max_lev = lev;
-                       }
-                       else
-                               n_alive_over100++;
-               }
-               else
-                       n_alive_surface++;
-
-               who[n++] = i;
-       }
-
-       ang_sort(who, &why, n, ang_sort_comp_hook, ang_sort_swap_hook);
-       if (n_alive_surface)
-       {
-               fprintf(fff, _("     地上  生存: %3d体\n", "      Surface  alive: %3d\n"), n_alive_surface);
-               n_alive_total += n_alive_surface;
-       }
-
-       for (IDX i = 0; i <= max_lev; i++)
-       {
-               fprintf(fff, _("%3d-%3d階  生存: %3d体\n", "Level %3d-%3d  alive: %3d\n"), 1 + i * 10, 10 + i * 10, n_alive[i]);
-               n_alive_total += n_alive[i];
-       }
-
-       if (n_alive_over100)
-       {
-               fprintf(fff, _("101-   階  生存: %3d体\n", "Level 101-     alive: %3d\n"), n_alive_over100);
-               n_alive_total += n_alive_over100;
-       }
-
-       if (n_alive_total)
-       {
-               fputs(_("---------  -----------\n", "-------------  ----------\n"), fff);
-               fprintf(fff, _("     合計  生存: %3d体\n\n", "        Total  alive: %3d\n\n"), n_alive_total);
-       }
-       else
-       {
-               fputs(_("現在は既知の生存ユニークはいません。\n", "No known uniques alive.\n"), fff);
-       }
-
-       for (int k = 0; k < n; k++)
-       {
-               monster_race *r_ptr = &r_info[who[k]];
-               fprintf(fff, _("     %s (レベル%d)\n", "     %s (level %d)\n"), r_name + r_ptr->name, (int)r_ptr->level);
-       }
-
-       C_KILL(who, max_r_idx, s16b);
-       my_fclose(fff);
-       (void)show_file(creature_ptr, TRUE, file_name, _("まだ生きているユニーク・モンスター", "Alive Uniques"), 0, 0);
-       fd_kill(file_name);
-}
-
-
-/*
  * Display weapon-exp
  */
 static void do_cmd_knowledge_weapon_exp(player_type *creature_ptr)
diff --git a/src/knowledge/knowledge-uniques.c b/src/knowledge/knowledge-uniques.c
new file mode 100644 (file)
index 0000000..def8f63
--- /dev/null
@@ -0,0 +1,94 @@
+#include "angband.h"
+#include "knowledge-artifacts.h"
+#include "cmd/dump-util.h"
+#include "sort.h"
+#include "core/show-file.h"
+
+/*
+ * Display known uniques
+ * With "XTRA HACK UNIQHIST" (Originally from XAngband)
+ */
+void do_cmd_knowledge_uniques(player_type *creature_ptr)
+{
+       u16b why = 2;
+       IDX *who;
+       int n_alive[10];
+       int n_alive_surface = 0;
+       int n_alive_over100 = 0;
+       int n_alive_total = 0;
+       int max_lev = -1;
+       for (IDX i = 0; i < 10; i++)
+               n_alive[i] = 0;
+
+       FILE *fff = NULL;
+       GAME_TEXT file_name[FILE_NAME_SIZE];
+       if (!open_temporary_file(&fff, file_name)) return;
+
+       C_MAKE(who, max_r_idx, MONRACE_IDX);
+       int n = 0;
+       for (IDX i = 1; i < max_r_idx; i++)
+       {
+               monster_race *r_ptr = &r_info[i];
+               if (!r_ptr->name) continue;
+               if (!(r_ptr->flags1 & RF1_UNIQUE)) continue;
+               if (!cheat_know && !r_ptr->r_sights) continue;
+               if (!r_ptr->rarity || ((r_ptr->rarity > 100) && !(r_ptr->flags1 & RF1_QUESTOR))) continue;
+               if (r_ptr->max_num == 0) continue;
+
+               if (r_ptr->level)
+               {
+                       int lev = (r_ptr->level - 1) / 10;
+                       if (lev < 10)
+                       {
+                               n_alive[lev]++;
+                               if (max_lev < lev) max_lev = lev;
+                       }
+                       else
+                               n_alive_over100++;
+               }
+               else
+                       n_alive_surface++;
+
+               who[n++] = i;
+       }
+
+       ang_sort(who, &why, n, ang_sort_comp_hook, ang_sort_swap_hook);
+       if (n_alive_surface)
+       {
+               fprintf(fff, _("     地上  生存: %3d体\n", "      Surface  alive: %3d\n"), n_alive_surface);
+               n_alive_total += n_alive_surface;
+       }
+
+       for (IDX i = 0; i <= max_lev; i++)
+       {
+               fprintf(fff, _("%3d-%3d階  生存: %3d体\n", "Level %3d-%3d  alive: %3d\n"), 1 + i * 10, 10 + i * 10, n_alive[i]);
+               n_alive_total += n_alive[i];
+       }
+
+       if (n_alive_over100)
+       {
+               fprintf(fff, _("101-   階  生存: %3d体\n", "Level 101-     alive: %3d\n"), n_alive_over100);
+               n_alive_total += n_alive_over100;
+       }
+
+       if (n_alive_total)
+       {
+               fputs(_("---------  -----------\n", "-------------  ----------\n"), fff);
+               fprintf(fff, _("     合計  生存: %3d体\n\n", "        Total  alive: %3d\n\n"), n_alive_total);
+       }
+       else
+       {
+               fputs(_("現在は既知の生存ユニークはいません。\n", "No known uniques alive.\n"), fff);
+       }
+
+       for (int k = 0; k < n; k++)
+       {
+               monster_race *r_ptr = &r_info[who[k]];
+               fprintf(fff, _("     %s (レベル%d)\n", "     %s (level %d)\n"), r_name + r_ptr->name, (int)r_ptr->level);
+       }
+
+       C_KILL(who, max_r_idx, s16b);
+       my_fclose(fff);
+       (void)show_file(creature_ptr, TRUE, file_name, _("まだ生きているユニーク・モンスター", "Alive Uniques"), 0, 0);
+       fd_kill(file_name);
+}
diff --git a/src/knowledge/knowledge-uniques.h b/src/knowledge/knowledge-uniques.h
new file mode 100644 (file)
index 0000000..2cbf5a8
--- /dev/null
@@ -0,0 +1,3 @@
+#pragma once
+
+void do_cmd_knowledge_uniques(player_type *creature_ptr);