OSDN Git Service

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

index 74daa2c..f6573d9 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-experiences.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
     <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-experiences.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
index 0925ad1..e52d6ae 100644 (file)
     <ClCompile Include="..\..\src\knowledge\knowledge-uniques.c">
       <Filter>knowledge</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\knowledge\knowledge-experiences.c">
+      <Filter>knowledge</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\src\gamevalue.h" />
     <ClInclude Include="..\..\src\knowledge\knowledge-uniques.h">
       <Filter>knowledge</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\knowledge\knowledge-experiences.h">
+      <Filter>knowledge</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <None Include="..\..\src\wall.bmp" />
index fb8480b..f64a04a 100644 (file)
@@ -149,6 +149,7 @@ hengband_SOURCES = \
        z-virt.c z-virt.h \
        \
        knowledge/knowledge-artifacts.c knowledge/knowledge-artifacts.h \
+       knowledge/knowledge-experiences.c knowledge/knowledge-experiences.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 \
index 1e3b9bf..477729f 100644 (file)
@@ -44,6 +44,7 @@
 #include "io/interpret-pref-file.h"
 
 #include "knowledge/knowledge-artifacts.h"
+#include "knowledge/knowledge-experiences.h"
 #include "knowledge/knowledge-uniques.h"
 
 #include "autopick.h"
@@ -569,161 +570,6 @@ static FEAT_IDX collect_features(FEAT_IDX *feat_idx, BIT_FLAGS8 mode)
 }
 
 
-/*
- * Display weapon-exp
- */
-static void do_cmd_knowledge_weapon_exp(player_type *creature_ptr)
-{
-       FILE *fff = NULL;
-       GAME_TEXT file_name[FILE_NAME_SIZE];
-       if (!open_temporary_file(&fff, file_name)) return;
-
-       for (int i = 0; i < 5; i++)
-       {
-               for (int num = 0; num < 64; num++)
-               {
-                       SUB_EXP weapon_exp;
-                       char tmp[30];
-                       for (KIND_OBJECT_IDX j = 0; j < max_k_idx; j++)
-                       {
-                               object_kind *k_ptr = &k_info[j];
-
-                               if ((k_ptr->tval != TV_SWORD - i) || (k_ptr->sval != num)) continue;
-                               if ((k_ptr->tval == TV_BOW) && (k_ptr->sval == SV_CRIMSON || k_ptr->sval == SV_HARP)) continue;
-
-                               weapon_exp = creature_ptr->weapon_exp[4 - i][num];
-                               strip_name(tmp, j);
-                               fprintf(fff, "%-25s ", tmp);
-                               if (weapon_exp >= s_info[creature_ptr->pclass].w_max[4 - i][num]) fprintf(fff, "!");
-                               else fprintf(fff, " ");
-                               fprintf(fff, "%s", exp_level_str[weapon_exp_level(weapon_exp)]);
-                               if (cheat_xtra) fprintf(fff, " %d", weapon_exp);
-                               fprintf(fff, "\n");
-                               break;
-                       }
-               }
-       }
-
-       my_fclose(fff);
-       (void)show_file(creature_ptr, TRUE, file_name, _("武器の経験値", "Weapon Proficiency"), 0, 0);
-       fd_kill(file_name);
-}
-
-
-/*!
- * @brief 魔法の経験値を表示するコマンドのメインルーチン
- * Display spell-exp
- * @return なし
- */
-static void do_cmd_knowledge_spell_exp(player_type *creature_ptr)
-{
-       FILE *fff = NULL;
-       GAME_TEXT file_name[FILE_NAME_SIZE];
-       if (!open_temporary_file(&fff, file_name)) return;
-
-       if (creature_ptr->realm1 != REALM_NONE)
-       {
-               fprintf(fff, _("%sの魔法書\n", "%s Spellbook\n"), realm_names[creature_ptr->realm1]);
-               for (SPELL_IDX i = 0; i < 32; i++)
-               {
-                       const magic_type *s_ptr;
-                       if (!is_magic(creature_ptr->realm1))
-                       {
-                               s_ptr = &technic_info[creature_ptr->realm1 - MIN_TECHNIC][i];
-                       }
-                       else
-                       {
-                               s_ptr = &mp_ptr->info[creature_ptr->realm1 - 1][i];
-                       }
-
-                       if (s_ptr->slevel >= 99) continue;
-                       SUB_EXP spell_exp = creature_ptr->spell_exp[i];
-                       int exp_level = spell_exp_level(spell_exp);
-                       fprintf(fff, "%-25s ", exe_spell(creature_ptr, creature_ptr->realm1, i, SPELL_NAME));
-                       if (creature_ptr->realm1 == REALM_HISSATSU)
-                               fprintf(fff, "[--]");
-                       else
-                       {
-                               if (exp_level >= EXP_LEVEL_MASTER) fprintf(fff, "!");
-                               else fprintf(fff, " ");
-                               fprintf(fff, "%s", exp_level_str[exp_level]);
-                       }
-
-                       if (cheat_xtra) fprintf(fff, " %d", spell_exp);
-                       fprintf(fff, "\n");
-               }
-       }
-
-       if (creature_ptr->realm2 != REALM_NONE)
-       {
-               fprintf(fff, _("%sの魔法書\n", "\n%s Spellbook\n"), realm_names[creature_ptr->realm2]);
-               for (SPELL_IDX i = 0; i < 32; i++)
-               {
-                       const magic_type *s_ptr;
-                       if (!is_magic(creature_ptr->realm1))
-                       {
-                               s_ptr = &technic_info[creature_ptr->realm2 - MIN_TECHNIC][i];
-                       }
-                       else
-                       {
-                               s_ptr = &mp_ptr->info[creature_ptr->realm2 - 1][i];
-                       }
-
-                       if (s_ptr->slevel >= 99) continue;
-
-                       SUB_EXP spell_exp = creature_ptr->spell_exp[i + 32];
-                       int exp_level = spell_exp_level(spell_exp);
-                       fprintf(fff, "%-25s ", exe_spell(creature_ptr, creature_ptr->realm2, i, SPELL_NAME));
-                       if (exp_level >= EXP_LEVEL_EXPERT) fprintf(fff, "!");
-                       else fprintf(fff, " ");
-                       fprintf(fff, "%s", exp_level_str[exp_level]);
-                       if (cheat_xtra) fprintf(fff, " %d", spell_exp);
-                       fprintf(fff, "\n");
-               }
-       }
-
-       my_fclose(fff);
-       (void)show_file(creature_ptr, TRUE, file_name, _("魔法の経験値", "Spell Proficiency"), 0, 0);
-       fd_kill(file_name);
-}
-
-
-/*!
- * @brief スキル情報を表示するコマンドのメインルーチン /
- * Display skill-exp
- * @return なし
- */
-static void do_cmd_knowledge_skill_exp(player_type *creature_ptr)
-{
-       char skill_name[GINOU_TEMPMAX][20] =
-       {
-               _("マーシャルアーツ", "Martial Arts    "),
-               _("二刀流          ", "Dual Wielding   "),
-               _("乗馬            ", "Riding          "),
-               _("盾              ", "Shield          ")
-       };
-
-       FILE *fff = NULL;
-       char file_name[FILE_NAME_SIZE];
-       if (!open_temporary_file(&fff, file_name)) return;
-
-       for (int i = 0; i < GINOU_TEMPMAX; i++)
-       {
-               int skill_exp = creature_ptr->skill_exp[i];
-               fprintf(fff, "%-20s ", skill_name[i]);
-               if (skill_exp >= s_info[creature_ptr->pclass].s_max[i]) fprintf(fff, "!");
-               else fprintf(fff, " ");
-               fprintf(fff, "%s", exp_level_str[(i == GINOU_RIDING) ? riding_exp_level(skill_exp) : weapon_exp_level(skill_exp)]);
-               if (cheat_xtra) fprintf(fff, " %d", skill_exp);
-               fprintf(fff, "\n");
-       }
-
-       my_fclose(fff);
-       (void)show_file(creature_ptr, TRUE, file_name, _("技能の経験値", "Miscellaneous Proficiency"), 0, 0);
-       fd_kill(file_name);
-}
-
-
 /*!
  * @brief 現在のペットを表示するコマンドのメインルーチン /
  * Display current pets
diff --git a/src/knowledge/knowledge-experiences.c b/src/knowledge/knowledge-experiences.c
new file mode 100644 (file)
index 0000000..389de73
--- /dev/null
@@ -0,0 +1,161 @@
+#include "angband.h"
+#include "knowledge-experiences.h"
+#include "cmd/dump-util.h"
+#include "core/show-file.h"
+#include "object-flavor.h"
+#include "objectkind.h"
+#include "player-skill.h"
+
+/*
+ * Display weapon-exp
+ */
+void do_cmd_knowledge_weapon_exp(player_type *creature_ptr)
+{
+       FILE *fff = NULL;
+       GAME_TEXT file_name[FILE_NAME_SIZE];
+       if (!open_temporary_file(&fff, file_name)) return;
+
+       for (int i = 0; i < 5; i++)
+       {
+               for (int num = 0; num < 64; num++)
+               {
+                       SUB_EXP weapon_exp;
+                       char tmp[30];
+                       for (KIND_OBJECT_IDX j = 0; j < max_k_idx; j++)
+                       {
+                               object_kind *k_ptr = &k_info[j];
+
+                               if ((k_ptr->tval != TV_SWORD - i) || (k_ptr->sval != num)) continue;
+                               if ((k_ptr->tval == TV_BOW) && (k_ptr->sval == SV_CRIMSON || k_ptr->sval == SV_HARP)) continue;
+
+                               weapon_exp = creature_ptr->weapon_exp[4 - i][num];
+                               strip_name(tmp, j);
+                               fprintf(fff, "%-25s ", tmp);
+                               if (weapon_exp >= s_info[creature_ptr->pclass].w_max[4 - i][num]) fprintf(fff, "!");
+                               else fprintf(fff, " ");
+                               fprintf(fff, "%s", exp_level_str[weapon_exp_level(weapon_exp)]);
+                               if (cheat_xtra) fprintf(fff, " %d", weapon_exp);
+                               fprintf(fff, "\n");
+                               break;
+                       }
+               }
+       }
+
+       my_fclose(fff);
+       (void)show_file(creature_ptr, TRUE, file_name, _("武器の経験値", "Weapon Proficiency"), 0, 0);
+       fd_kill(file_name);
+}
+
+
+/*!
+ * @brief 魔法の経験値を表示するコマンドのメインルーチン
+ * Display spell-exp
+ * @return なし
+ */
+void do_cmd_knowledge_spell_exp(player_type *creature_ptr)
+{
+       FILE *fff = NULL;
+       GAME_TEXT file_name[FILE_NAME_SIZE];
+       if (!open_temporary_file(&fff, file_name)) return;
+
+       if (creature_ptr->realm1 != REALM_NONE)
+       {
+               fprintf(fff, _("%sの魔法書\n", "%s Spellbook\n"), realm_names[creature_ptr->realm1]);
+               for (SPELL_IDX i = 0; i < 32; i++)
+               {
+                       const magic_type *s_ptr;
+                       if (!is_magic(creature_ptr->realm1))
+                       {
+                               s_ptr = &technic_info[creature_ptr->realm1 - MIN_TECHNIC][i];
+                       }
+                       else
+                       {
+                               s_ptr = &mp_ptr->info[creature_ptr->realm1 - 1][i];
+                       }
+
+                       if (s_ptr->slevel >= 99) continue;
+                       SUB_EXP spell_exp = creature_ptr->spell_exp[i];
+                       int exp_level = spell_exp_level(spell_exp);
+                       fprintf(fff, "%-25s ", exe_spell(creature_ptr, creature_ptr->realm1, i, SPELL_NAME));
+                       if (creature_ptr->realm1 == REALM_HISSATSU)
+                               fprintf(fff, "[--]");
+                       else
+                       {
+                               if (exp_level >= EXP_LEVEL_MASTER) fprintf(fff, "!");
+                               else fprintf(fff, " ");
+                               fprintf(fff, "%s", exp_level_str[exp_level]);
+                       }
+
+                       if (cheat_xtra) fprintf(fff, " %d", spell_exp);
+                       fprintf(fff, "\n");
+               }
+       }
+
+       if (creature_ptr->realm2 != REALM_NONE)
+       {
+               fprintf(fff, _("%sの魔法書\n", "\n%s Spellbook\n"), realm_names[creature_ptr->realm2]);
+               for (SPELL_IDX i = 0; i < 32; i++)
+               {
+                       const magic_type *s_ptr;
+                       if (!is_magic(creature_ptr->realm1))
+                       {
+                               s_ptr = &technic_info[creature_ptr->realm2 - MIN_TECHNIC][i];
+                       }
+                       else
+                       {
+                               s_ptr = &mp_ptr->info[creature_ptr->realm2 - 1][i];
+                       }
+
+                       if (s_ptr->slevel >= 99) continue;
+
+                       SUB_EXP spell_exp = creature_ptr->spell_exp[i + 32];
+                       int exp_level = spell_exp_level(spell_exp);
+                       fprintf(fff, "%-25s ", exe_spell(creature_ptr, creature_ptr->realm2, i, SPELL_NAME));
+                       if (exp_level >= EXP_LEVEL_EXPERT) fprintf(fff, "!");
+                       else fprintf(fff, " ");
+                       fprintf(fff, "%s", exp_level_str[exp_level]);
+                       if (cheat_xtra) fprintf(fff, " %d", spell_exp);
+                       fprintf(fff, "\n");
+               }
+       }
+
+       my_fclose(fff);
+       (void)show_file(creature_ptr, TRUE, file_name, _("魔法の経験値", "Spell Proficiency"), 0, 0);
+       fd_kill(file_name);
+}
+
+
+/*!
+ * @brief スキル情報を表示するコマンドのメインルーチン /
+ * Display skill-exp
+ * @return なし
+ */
+void do_cmd_knowledge_skill_exp(player_type *creature_ptr)
+{
+       char skill_name[GINOU_TEMPMAX][20] =
+       {
+               _("マーシャルアーツ", "Martial Arts    "),
+               _("二刀流          ", "Dual Wielding   "),
+               _("乗馬            ", "Riding          "),
+               _("盾              ", "Shield          ")
+       };
+
+       FILE *fff = NULL;
+       char file_name[FILE_NAME_SIZE];
+       if (!open_temporary_file(&fff, file_name)) return;
+
+       for (int i = 0; i < GINOU_TEMPMAX; i++)
+       {
+               int skill_exp = creature_ptr->skill_exp[i];
+               fprintf(fff, "%-20s ", skill_name[i]);
+               if (skill_exp >= s_info[creature_ptr->pclass].s_max[i]) fprintf(fff, "!");
+               else fprintf(fff, " ");
+               fprintf(fff, "%s", exp_level_str[(i == GINOU_RIDING) ? riding_exp_level(skill_exp) : weapon_exp_level(skill_exp)]);
+               if (cheat_xtra) fprintf(fff, " %d", skill_exp);
+               fprintf(fff, "\n");
+       }
+
+       my_fclose(fff);
+       (void)show_file(creature_ptr, TRUE, file_name, _("技能の経験値", "Miscellaneous Proficiency"), 0, 0);
+       fd_kill(file_name);
+}
diff --git a/src/knowledge/knowledge-experiences.h b/src/knowledge/knowledge-experiences.h
new file mode 100644 (file)
index 0000000..cf09ca5
--- /dev/null
@@ -0,0 +1,5 @@
+#pragma once
+
+void do_cmd_knowledge_weapon_exp(player_type *creature_ptr);
+void do_cmd_knowledge_spell_exp(player_type *creature_ptr);
+void do_cmd_knowledge_skill_exp(player_type *creature_ptr);