OSDN Git Service

[Refactor] #40573 Separated mind-info.c/h from mind-switcher.c/h
authorHourier <hourier@users.sourceforge.jp>
Wed, 29 Jul 2020 10:41:42 +0000 (19:41 +0900)
committerHourier <hourier@users.sourceforge.jp>
Wed, 29 Jul 2020 10:41:47 +0000 (19:41 +0900)
Hengband/Hengband/Hengband.vcxproj
Hengband/Hengband/Hengband.vcxproj.filters
src/Makefile.am
src/mind/mind-info.c [new file with mode: 0644]
src/mind/mind-info.h [new file with mode: 0644]
src/mind/mind-switcher.c
src/mind/mind-switcher.h
src/mind/mind-types.h [new file with mode: 0644]
src/window/display-sub-window-spells.c

index 3682785..003209f 100644 (file)
     <ClCompile Include="..\..\src\melee\melee-spell.c" />\r
     <ClCompile Include="..\..\src\mind\mind-blue-mage.c" />\r
     <ClCompile Include="..\..\src\mind\mind-explanations-table.c" />\r
+    <ClCompile Include="..\..\src\mind\mind-info.c" />\r
     <ClCompile Include="..\..\src\mind\mind-mage.c" />\r
     <ClCompile Include="..\..\src\mind\mind-magic-resistance.c" />\r
     <ClCompile Include="..\..\src\mind\mind-weaponsmith.c" />\r
     <ClInclude Include="..\..\src\melee\melee-spell.h" />\r
     <ClInclude Include="..\..\src\mind\mind-blue-mage.h" />\r
     <ClInclude Include="..\..\src\mind\mind-explanations-table.h" />\r
+    <ClInclude Include="..\..\src\mind\mind-info.h" />\r
     <ClInclude Include="..\..\src\mind\mind-mage.h" />\r
     <ClInclude Include="..\..\src\mind\mind-magic-resistance.h" />\r
+    <ClInclude Include="..\..\src\mind\mind-types.h" />\r
     <ClInclude Include="..\..\src\mind\mind-weaponsmith.h" />\r
     <ClInclude Include="..\..\src\mspell\element-resistance-checker.h" />\r
     <ClInclude Include="..\..\src\mspell\high-resistance-checker.h" />\r
index a0ec777..4c04b4f 100644 (file)
     <ClCompile Include="..\..\src\mind\mind-explanations-table.c">
       <Filter>mind</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\mind\mind-info.c">
+      <Filter>mind</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\src\combat\shoot.h">
     <ClInclude Include="..\..\src\mind\mind-explanations-table.h">
       <Filter>mind</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\mind\mind-info.h">
+      <Filter>mind</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\mind\mind-types.h">
+      <Filter>mind</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <None Include="..\..\src\wall.bmp" />
index d3c0ae1..eac6764 100644 (file)
@@ -390,6 +390,7 @@ hengband_SOURCES = \
        mind/mind-cavalry.c mind/mind-cavalry.h \
        mind/mind-explanations-table.c mind/mind-explanations-table.h \
        mind/mind-force-trainer.c mind/mind-force-trainer.h \
+       mind/mind-info.c mind/mind-info.h \
        mind/mind-mage.c mind/mind-mage.h \
        mind/mind-magic-resistance.c mind/mind-magic-resistance.h \
        mind/mind-mindcrafter.c mind/mind-mindcrafter.h \
@@ -398,6 +399,7 @@ hengband_SOURCES = \
        mind/mind-samurai.c mind/mind-samurai.h \
        mind/mind-sniper.c mind/mind-sniper.h \
        mind/mind-switcher.c mind/mind-switcher.h \
+       mind/mind-types.h \
        mind/mind-warrior.c mind/mind-warrior.h \
        mind/mind-warrior-mage.c mind/mind-warrior-mage.h \
        mind/mind-weaponsmith.c mind/mind-weaponsmith.h \
diff --git a/src/mind/mind-info.c b/src/mind/mind-info.c
new file mode 100644 (file)
index 0000000..9efde23
--- /dev/null
@@ -0,0 +1,229 @@
+#include "mind/mind-info.h"
+#include "cmd-action/cmd-spell.h"
+#include "mind/mind-force-trainer.h"
+#include "mind/mind-types.h"
+
+/*!
+ * @brief 特殊技能の効果情報をまとめたフォーマットを返す
+ * @param p 情報を返す文字列参照ポインタ
+ * @param use_mind 職業毎の特殊技能ID
+ * @param power モンスター魔法のID
+ * @return なし
+ */
+void mindcraft_info(player_type *caster_ptr, char *p, int use_mind, int power)
+{
+    PLAYER_LEVEL plev = caster_ptr->lev;
+    strcpy(p, "");
+    switch (use_mind) {
+    case MIND_MINDCRAFTER:
+        switch (power) {
+        case 0:
+            break;
+        case 1:
+            sprintf(p, " %s%dd%d", KWD_DAM, 3 + ((plev - 1) / 4), 3 + plev / 15);
+            break;
+        case 2:
+            sprintf(p, " %s10", KWD_SPHERE);
+            break;
+        case 3:
+            sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
+            break;
+        case 4:
+            break;
+        case 5:
+            sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4));
+            break;
+        case 6:
+            sprintf(p, " %s%d", KWD_DURATION, plev);
+            break;
+        case 7:
+            break;
+        case 8:
+            sprintf(p, (plev < 25 ? " %s%d" : " %sd%d"), KWD_DAM, (plev < 25 ? plev * 3 / 2 : plev * ((plev - 5) / 10 + 1)));
+            break;
+        case 9:
+            sprintf(p, " %s10+d%d", KWD_DURATION, plev * 3 / 2);
+            break;
+#ifdef JP
+        case 10:
+            sprintf(p, " 最大重量:%d.%dkg", lbtokg1(plev * 15), lbtokg2(plev * 15));
+            break;
+#else
+        case 10:
+            sprintf(p, " max wgt %d", plev * 15);
+            break;
+#endif
+        case 11:
+            sprintf(p, " %s%dd6", KWD_DAM, plev / 2);
+            break;
+        case 12:
+            sprintf(p, " %sd%d+%d", KWD_DAM, plev * 3, plev * 3);
+            break;
+        case 13:
+            sprintf(p, _(" 行動:%ld回", " %ld acts."), (long int)(caster_ptr->csp + 100 - caster_ptr->energy_need - 50) / 100);
+            break;
+        }
+        break;
+    case MIND_KI: {
+        int boost = get_current_ki(caster_ptr);
+        if (heavy_armor(caster_ptr))
+            boost /= 2;
+
+        switch (power) {
+        case 0:
+            sprintf(p, " %s%dd4", KWD_DAM, 3 + ((plev - 1) / 5) + boost / 12);
+            break;
+        case 1:
+            break;
+        case 2:
+            sprintf(p, " %s%d+d30", KWD_DURATION, 30 + boost / 5);
+            break;
+        case 3:
+            sprintf(p, " %s%dd5", KWD_DAM, 5 + ((plev - 1) / 5) + boost / 10);
+            break;
+        case 4:
+            sprintf(p, " %s%d+d20", KWD_DURATION, 20 + boost / 5);
+            break;
+        case 5:
+            break;
+        case 6:
+            sprintf(p, " %s%d+d%d", KWD_DURATION, 15 + boost / 7, plev / 2);
+            break;
+        case 7:
+            sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4) + boost / 12);
+            break;
+        case 8:
+            sprintf(p, " %s10d6+%d", KWD_DAM, plev * 3 / 2 + boost * 3 / 5);
+            break;
+        case 9:
+            break;
+        case 10:
+            sprintf(p, _(" 最大%d体", " max %d"), 1 + boost / 100);
+            break;
+        case 11:
+            sprintf(p, " %s%d", KWD_DAM, 100 + plev + boost);
+            break;
+        case 12:
+            sprintf(p, " %s%dd15", KWD_DAM, 10 + plev / 2 + boost * 3 / 10);
+            break;
+        case 13:
+            sprintf(p, _(" 行動:%d+d16回", " %d+d16 acts"), 16 + boost / 20);
+            break;
+        }
+        break;
+    }
+    case MIND_MIRROR_MASTER: {
+        switch (power) {
+        case 0:
+            break;
+        case 1:
+            break;
+        case 2:
+            sprintf(p, " %s%dd4", KWD_DAM, 3 + ((plev - 1) / 5));
+            break;
+        case 3:
+            sprintf(p, " %s10", KWD_SPHERE);
+            break;
+        case 4:
+            break;
+        case 5:
+            sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
+            break;
+        case 6:
+            sprintf(p, " %s20+d20", KWD_DURATION);
+            break;
+        case 7:
+            break;
+        case 8:
+            sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4));
+            break;
+        case 9:
+            break;
+        case 10:
+            sprintf(p, " %s%dd8", KWD_DAM, 11 + (plev - 5) / 4);
+            break;
+        case 11:
+            break;
+        case 12:
+            sprintf(p, " %s20+d20", KWD_DURATION);
+            break;
+        case 13:
+            sprintf(p, " %s150+d%d", KWD_DAM, plev * 2);
+            break;
+        case 14:
+            break;
+        case 15:
+            break;
+        case 16:
+            sprintf(p, " %s%d", KWD_SPHERE, plev / 2 + 10);
+            break;
+        case 17:
+            break;
+        case 18:
+            sprintf(p, " %s6+d6", KWD_DURATION);
+            break;
+        case 19:
+            sprintf(p, " %s%d", KWD_DAM, plev * 11 + 5);
+            break;
+        case 20:
+            sprintf(p, " %s4+d4", KWD_DURATION);
+            break;
+        }
+        break;
+    }
+    case MIND_NINJUTSU: {
+        switch (power) {
+        case 0:
+            break;
+        case 1:
+            break;
+        case 2:
+            sprintf(p, " %s10", KWD_SPHERE);
+            break;
+        case 3:
+            break;
+        case 4:
+            sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
+            break;
+        case 5:
+            sprintf(p, " %s30", KWD_SPHERE);
+            break;
+        case 6:
+            break;
+        case 7:
+            break;
+        case 8:
+            sprintf(p, " %s20+d20", KWD_DURATION);
+            break;
+        case 9:
+            sprintf(p, " %s%d", KWD_DAM, (50 + plev) / 2);
+            break;
+        case 10:
+            break;
+        case 11:
+            break;
+        case 12:
+            break;
+        case 13:
+            break;
+        case 14:
+            break;
+        case 15:
+            break;
+        case 16:
+            sprintf(p, " %s%d+d%d", KWD_DURATION, plev / 2, plev / 2);
+            break;
+        case 17:
+            sprintf(p, " %s%d*3", KWD_DAM, (75 + plev * 2 / 3) / 2);
+            break;
+        case 18:
+            sprintf(p, " %s%dd10", KWD_DAM, 6 + plev / 8);
+            break;
+        case 19:
+            sprintf(p, " %s6+d6", KWD_DURATION);
+            break;
+        }
+        break;
+    }
+    }
+}
diff --git a/src/mind/mind-info.h b/src/mind/mind-info.h
new file mode 100644 (file)
index 0000000..e8f827c
--- /dev/null
@@ -0,0 +1,5 @@
+#pragma once
+
+#include "system/angband.h"
+
+void mindcraft_info(player_type *caster_ptr, char *p, int use_mind, int power);
index d7cf955..7a164a1 100644 (file)
 #include "main/sound-of-music.h"
 #include "mind/mind-explanations-table.h"
 #include "mind/mind-force-trainer.h"
+#include "mind/mind-info.h"
 #include "mind/mind-magic-resistance.h"
 #include "mind/mind-mindcrafter.h"
 #include "mind/mind-mirror-master.h"
 #include "mind/mind-ninja.h"
+#include "mind/mind-types.h"
 #include "mind/mind-warrior.h"
 #include "monster-floor/monster-summon.h"
 #include "monster-floor/place-monster-types.h"
 #include "view/display-messages.h"
 
 /*!
- * @brief 特殊技能の効果情報をまとめたフォーマットを返す
- * @param p 情報を返す文字列参照ポインタ
- * @param use_mind 職業毎の特殊技能ID
- * @param power モンスター魔法のID
- * @return なし
- */
-void mindcraft_info(player_type *caster_ptr, char *p, int use_mind, int power)
-{
-    PLAYER_LEVEL plev = caster_ptr->lev;
-
-    strcpy(p, "");
-
-    switch (use_mind) {
-    case MIND_MINDCRAFTER:
-        switch (power) {
-        case 0:
-            break;
-        case 1:
-            sprintf(p, " %s%dd%d", KWD_DAM, 3 + ((plev - 1) / 4), 3 + plev / 15);
-            break;
-        case 2:
-            sprintf(p, " %s10", KWD_SPHERE);
-            break;
-        case 3:
-            sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
-            break;
-        case 4:
-            break;
-        case 5:
-            sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4));
-            break;
-        case 6:
-            sprintf(p, " %s%d", KWD_DURATION, plev);
-            break;
-        case 7:
-            break;
-        case 8:
-            sprintf(p, (plev < 25 ? " %s%d" : " %sd%d"), KWD_DAM, (plev < 25 ? plev * 3 / 2 : plev * ((plev - 5) / 10 + 1)));
-            break;
-        case 9:
-            sprintf(p, " %s10+d%d", KWD_DURATION, plev * 3 / 2);
-            break;
-#ifdef JP
-        case 10:
-            sprintf(p, " 最大重量:%d.%dkg", lbtokg1(plev * 15), lbtokg2(plev * 15));
-            break;
-#else
-        case 10:
-            sprintf(p, " max wgt %d", plev * 15);
-            break;
-#endif
-        case 11:
-            sprintf(p, " %s%dd6", KWD_DAM, plev / 2);
-            break;
-        case 12:
-            sprintf(p, " %sd%d+%d", KWD_DAM, plev * 3, plev * 3);
-            break;
-        case 13:
-            sprintf(p, _(" 行動:%ld回", " %ld acts."), (long int)(caster_ptr->csp + 100 - caster_ptr->energy_need - 50) / 100);
-            break;
-        }
-        break;
-    case MIND_KI: {
-        int boost = get_current_ki(caster_ptr);
-
-        if (heavy_armor(caster_ptr))
-            boost /= 2;
-
-        switch (power) {
-        case 0:
-            sprintf(p, " %s%dd4", KWD_DAM, 3 + ((plev - 1) / 5) + boost / 12);
-            break;
-        case 1:
-            break;
-        case 2:
-            sprintf(p, " %s%d+d30", KWD_DURATION, 30 + boost / 5);
-            break;
-        case 3:
-            sprintf(p, " %s%dd5", KWD_DAM, 5 + ((plev - 1) / 5) + boost / 10);
-            break;
-        case 4:
-            sprintf(p, " %s%d+d20", KWD_DURATION, 20 + boost / 5);
-            break;
-        case 5:
-            break;
-        case 6:
-            sprintf(p, " %s%d+d%d", KWD_DURATION, 15 + boost / 7, plev / 2);
-            break;
-        case 7:
-            sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4) + boost / 12);
-            break;
-        case 8:
-            sprintf(p, " %s10d6+%d", KWD_DAM, plev * 3 / 2 + boost * 3 / 5);
-            break;
-        case 9:
-            break;
-        case 10:
-            sprintf(p, _(" 最大%d体", " max %d"), 1 + boost / 100);
-            break;
-        case 11:
-            sprintf(p, " %s%d", KWD_DAM, 100 + plev + boost);
-            break;
-        case 12:
-            sprintf(p, " %s%dd15", KWD_DAM, 10 + plev / 2 + boost * 3 / 10);
-            break;
-        case 13:
-            sprintf(p, _(" 行動:%d+d16回", " %d+d16 acts"), 16 + boost / 20);
-            break;
-        }
-        break;
-    }
-    case MIND_MIRROR_MASTER: {
-        switch (power) {
-        case 0:
-            break;
-        case 1:
-            break;
-        case 2:
-            sprintf(p, " %s%dd4", KWD_DAM, 3 + ((plev - 1) / 5));
-            break;
-        case 3:
-            sprintf(p, " %s10", KWD_SPHERE);
-            break;
-        case 4:
-            break;
-        case 5:
-            sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
-            break;
-        case 6:
-            sprintf(p, " %s20+d20", KWD_DURATION);
-            break;
-        case 7:
-            break;
-        case 8:
-            sprintf(p, " %s%dd8", KWD_DAM, 8 + ((plev - 5) / 4));
-            break;
-        case 9:
-            break;
-        case 10:
-            sprintf(p, " %s%dd8", KWD_DAM, 11 + (plev - 5) / 4);
-            break;
-        case 11:
-            break;
-        case 12:
-            sprintf(p, " %s20+d20", KWD_DURATION);
-            break;
-        case 13:
-            sprintf(p, " %s150+d%d", KWD_DAM, plev * 2);
-            break;
-        case 14:
-            break;
-        case 15:
-            break;
-        case 16:
-            sprintf(p, " %s%d", KWD_SPHERE, plev / 2 + 10);
-            break;
-        case 17:
-            break;
-        case 18:
-            sprintf(p, " %s6+d6", KWD_DURATION);
-            break;
-        case 19:
-            sprintf(p, " %s%d", KWD_DAM, plev * 11 + 5);
-            break;
-        case 20:
-            sprintf(p, " %s4+d4", KWD_DURATION);
-            break;
-        }
-        break;
-    }
-    case MIND_NINJUTSU: {
-        switch (power) {
-        case 0:
-            break;
-        case 1:
-            break;
-        case 2:
-            sprintf(p, " %s10", KWD_SPHERE);
-            break;
-        case 3:
-            break;
-        case 4:
-            sprintf(p, " %s%d", KWD_SPHERE, plev * 5);
-            break;
-        case 5:
-            sprintf(p, " %s30", KWD_SPHERE);
-            break;
-        case 6:
-            break;
-        case 7:
-            break;
-        case 8:
-            sprintf(p, " %s20+d20", KWD_DURATION);
-            break;
-        case 9:
-            sprintf(p, " %s%d", KWD_DAM, (50 + plev) / 2);
-            break;
-        case 10:
-            break;
-        case 11:
-            break;
-        case 12:
-            break;
-        case 13:
-            break;
-        case 14:
-            break;
-        case 15:
-            break;
-        case 16:
-            sprintf(p, " %s%d+d%d", KWD_DURATION, plev / 2, plev / 2);
-            break;
-        case 17:
-            sprintf(p, " %s%d*3", KWD_DAM, (75 + plev * 2 / 3) / 2);
-            break;
-        case 18:
-            sprintf(p, " %s%dd10", KWD_DAM, 6 + plev / 8);
-            break;
-        case 19:
-            sprintf(p, " %s6+d6", KWD_DURATION);
-            break;
-        }
-        break;
-    }
-    }
-}
-
-/*!
  * @brief 使用可能な特殊技能を選択する /
  * Allow user to choose a mindcrafter power.
  * @param sn 選択した特殊技能ID、キャンセルの場合-1、不正な選択の場合-2を返す
index a3f475e..cdc092f 100644 (file)
@@ -2,14 +2,7 @@
 
 #include "system/angband.h"
 
-#define MIND_MINDCRAFTER    0 /*!< 特殊能力: 超能力 */
-#define MIND_KI             1 /*!< 特殊能力: 練気 */
-#define MIND_BERSERKER      2 /*!< 特殊能力: 怒り */
-#define MIND_MIRROR_MASTER  3 /*!< 特殊能力: 鏡魔法 */
-#define MIND_NINJUTSU       4 /*!< 特殊能力: 忍術 */
-
-extern void mindcraft_info(player_type *caster_ptr, char *p, int use_mind, int power);
-extern void do_cmd_mind(player_type *caster_ptr);
-extern void do_cmd_mind_browse(player_type *caster_ptr);
-extern void do_cmd_mind_browse(player_type *caster_ptr);
+void do_cmd_mind(player_type *caster_ptr);
+void do_cmd_mind_browse(player_type *caster_ptr);
+void do_cmd_mind_browse(player_type *caster_ptr);
 
diff --git a/src/mind/mind-types.h b/src/mind/mind-types.h
new file mode 100644 (file)
index 0000000..044b614
--- /dev/null
@@ -0,0 +1,9 @@
+#pragma once
+
+typedef enum mind_kind_type {
+       MIND_MINDCRAFTER = 0, /*!< 特殊能力: 超能力 */
+    MIND_KI = 1, /*!< 特殊能力: 練気 */
+    MIND_BERSERKER = 2, /*!< 特殊能力: 怒り */
+    MIND_MIRROR_MASTER = 3, /*!< 特殊能力: 鏡魔法 */
+    MIND_NINJUTSU = 4, /*!< 特殊能力: 忍術 */
+} mind_kind_type;
index fef533f..71aa5e2 100644 (file)
@@ -3,7 +3,8 @@
 #include "game-option/option-flags.h"
 #include "mind/mind-sniper.h"
 #include "mind/mind-explanations-table.h"
-#include "mind/mind-switcher.h"
+#include "mind/mind-info.h"
+#include "mind/mind-types.h"
 #include "player/player-class.h"
 #include "realm/realm-names-table.h"
 #include "spell/spells-execution.h"