OSDN Git Service

[Refactor] #40647 Separated display-self-info.c/h from self-info.c
authorHourier <hourier@users.sourceforge.jp>
Fri, 21 Aug 2020 04:03:57 +0000 (13:03 +0900)
committerHourier <hourier@users.sourceforge.jp>
Fri, 21 Aug 2020 04:03:57 +0000 (13:03 +0900)
Hengband/Hengband/Hengband.vcxproj
Hengband/Hengband/Hengband.vcxproj.filters
src/Makefile.am
src/player-info/self-info.c
src/view/display-self-info.c [new file with mode: 0644]
src/view/display-self-info.h [new file with mode: 0644]

index 00e5e3c..e05af25 100644 (file)
     <ClCompile Include="..\..\src\target\target-setter.c" />\r
     <ClCompile Include="..\..\src\view\display-inventory.c" />\r
     <ClCompile Include="..\..\src\view\display-map.c" />\r
+    <ClCompile Include="..\..\src\view\display-self-info.c" />\r
     <ClCompile Include="..\..\src\window\display-sub-window-items.c" />\r
     <ClCompile Include="..\..\src\window\display-sub-window-spells.c" />\r
     <ClCompile Include="..\..\src\window\display-sub-windows.c" />\r
     <ClInclude Include="..\..\src\view\display-map.h" />\r
     <ClInclude Include="..\..\src\view\display-messages.h" />\r
     <ClInclude Include="..\..\src\view\display-monster-status.h" />\r
+    <ClInclude Include="..\..\src\view\display-self-info.h" />\r
     <ClInclude Include="..\..\src\window\display-sub-window-items.h" />\r
     <ClInclude Include="..\..\src\window\display-sub-window-spells.h" />\r
     <ClInclude Include="..\..\src\window\display-sub-windows.h" />\r
index 0516217..6932df2 100644 (file)
     <ClCompile Include="..\..\src\player-info\base-status-info.c">
       <Filter>player-info</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\view\display-self-info.c">
+      <Filter>view</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\src\combat\shoot.h">
     <ClInclude Include="..\..\src\player-info\base-status-info.h">
       <Filter>player-info</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\view\display-self-info.h">
+      <Filter>view</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <None Include="..\..\src\wall.bmp" />
index bbd9124..5c534fa 100644 (file)
@@ -848,6 +848,7 @@ hengband_SOURCES = \
        view/display-player-misc-info.c view/display-player-misc-info.h \
        view/display-player-middle.c view/display-player-middle.h \
        view/display-player.c view/display-player.h \
+       view/display-self-info.c view/display-self-info.h \
        view/display-store.c view/display-store.h \
        view/display-util.c view/display-util.h \
        view/object-describer.c view/object-describer.h \
index 2398893..6aa66db 100644 (file)
 #include "status/element-resistance.h"
 #include "term/screen-processor.h"
 #include "util/bit-flags-calculator.h"
-
-void display_life_rating(player_type *creature_ptr, self_info_type *si_ptr)
-{
-    creature_ptr->knowledge |= KNOW_STAT | KNOW_HPRATE;
-    strcpy(si_ptr->plev_buf, "");
-    int percent
-        = (int)(((long)creature_ptr->player_hp[PY_MAX_LEVEL - 1] * 200L) / (2 * creature_ptr->hitdie + ((PY_MAX_LEVEL - 1 + 3) * (creature_ptr->hitdie + 1))));
-    sprintf(si_ptr->plev_buf, _("現在の体力ランク : %d/100", "Your current Life Rating is %d/100."), percent);
-    strcpy(si_ptr->buf[0], si_ptr->plev_buf);
-    si_ptr->info[si_ptr->line++] = si_ptr->buf[0];
-    si_ptr->info[si_ptr->line++] = "";
-}
-
-void display_max_base_status(player_type *creature_ptr, self_info_type *si_ptr)
-{
-    si_ptr->info[si_ptr->line++] = _("能力の最大値", "Limits of maximum stats");
-    for (base_status_type v_nr = 0; v_nr < A_MAX; v_nr++) {
-        char stat_desc[80];
-        sprintf(stat_desc, "%s 18/%d", stat_names[v_nr], creature_ptr->stat_max_max[v_nr] - 18);
-        strcpy(si_ptr->s_string[v_nr], stat_desc);
-        si_ptr->info[si_ptr->line++] = si_ptr->s_string[v_nr];
-    }
-}
-
-void display_virtue(player_type *creature_ptr, self_info_type *si_ptr)
-{
-    si_ptr->info[si_ptr->line++] = "";
-    sprintf(si_ptr->plev_buf, _("現在の属性 : %s(%ld)", "Your alignment : %s(%ld)"), your_alignment(creature_ptr), (long int)creature_ptr->align);
-    strcpy(si_ptr->buf[1], si_ptr->plev_buf);
-    si_ptr->info[si_ptr->line++] = si_ptr->buf[1];
-    for (int v_nr = 0; v_nr < 8; v_nr++) {
-        GAME_TEXT vir_name[20];
-        char vir_desc[80];
-        int tester = creature_ptr->virtues[v_nr];
-        strcpy(vir_name, virtue[(creature_ptr->vir_types[v_nr]) - 1]);
-        sprintf(vir_desc, _("おっと。%sの情報なし。", "Oops. No info about %s."), vir_name);
-        if (tester < -100)
-            sprintf(vir_desc, _("[%s]の対極 (%d)", "You are the polar opposite of %s (%d)."), vir_name, tester);
-        else if (tester < -80)
-            sprintf(vir_desc, _("[%s]の大敵 (%d)", "You are an arch-enemy of %s (%d)."), vir_name, tester);
-        else if (tester < -60)
-            sprintf(vir_desc, _("[%s]の強敵 (%d)", "You are a bitter enemy of %s (%d)."), vir_name, tester);
-        else if (tester < -40)
-            sprintf(vir_desc, _("[%s]の敵 (%d)", "You are an enemy of %s (%d)."), vir_name, tester);
-        else if (tester < -20)
-            sprintf(vir_desc, _("[%s]の罪者 (%d)", "You have sinned against %s (%d)."), vir_name, tester);
-        else if (tester < 0)
-            sprintf(vir_desc, _("[%s]の迷道者 (%d)", "You have strayed from the path of %s (%d)."), vir_name, tester);
-        else if (tester == 0)
-            sprintf(vir_desc, _("[%s]の中立者 (%d)", "You are neutral to %s (%d)."), vir_name, tester);
-        else if (tester < 20)
-            sprintf(vir_desc, _("[%s]の小徳者 (%d)", "You are somewhat virtuous in %s (%d)."), vir_name, tester);
-        else if (tester < 40)
-            sprintf(vir_desc, _("[%s]の中徳者 (%d)", "You are virtuous in %s (%d)."), vir_name, tester);
-        else if (tester < 60)
-            sprintf(vir_desc, _("[%s]の高徳者 (%d)", "You are very virtuous in %s (%d)."), vir_name, tester);
-        else if (tester < 80)
-            sprintf(vir_desc, _("[%s]の覇者 (%d)", "You are a champion of %s (%d)."), vir_name, tester);
-        else if (tester < 100)
-            sprintf(vir_desc, _("[%s]の偉大な覇者 (%d)", "You are a great champion of %s (%d)."), vir_name, tester);
-        else
-            sprintf(vir_desc, _("[%s]の具現者 (%d)", "You are the living embodiment of %s (%d)."), vir_name, tester);
-
-        strcpy(si_ptr->v_string[v_nr], vir_desc);
-        si_ptr->info[si_ptr->line++] = si_ptr->v_string[v_nr];
-    }
-}
-
-void display_mimic_race_ability(player_type *creature_ptr, self_info_type *si_ptr)
-{
-    switch (creature_ptr->mimic_form) {
-    case MIMIC_DEMON:
-    case MIMIC_DEMON_LORD:
-        sprintf(si_ptr->plev_buf, _("あなたは %d ダメージの地獄か火炎のブレスを吐くことができる。(%d MP)", "You can nether breathe, dam. %d (cost %d)."),
-            3 * creature_ptr->lev, 10 + creature_ptr->lev / 3);
-
-        si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
-        break;
-    case MIMIC_VAMPIRE:
-        if (creature_ptr->lev <= 1)
-            break;
-
-        sprintf(si_ptr->plev_buf, _("あなたは敵から %d-%d HP の生命力を吸収できる。(%d MP)", "You can steal life from a foe, dam. %d-%d (cost %d)."),
-            creature_ptr->lev + MAX(1, creature_ptr->lev / 10), creature_ptr->lev + creature_ptr->lev * MAX(1, creature_ptr->lev / 10),
-            1 + (creature_ptr->lev / 3));
-        si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
-        break;
-    }
-}
+#include "view/display-self-info.h"
 
 void set_bad_status_info(player_type *creature_ptr, self_info_type *si_ptr)
 {
@@ -266,7 +178,7 @@ void set_esp_info(player_type *creature_ptr, self_info_type *si_ptr)
         si_ptr->info[si_ptr->line++] = _("あなたは特別な強敵の存在を感じる能力を持っている。", "You sense unique monsters.");
 }
 
-void set_weapon_bless_info(player_type *creature_ptr, self_info_type *si_ptr)
+static void set_weapon_bless_info(self_info_type *si_ptr)
 {
     if (have_flag(si_ptr->flags, TR_BLESSED))
         si_ptr->info[si_ptr->line++] = _("あなたの武器は神の祝福を受けている。", "Your weapon has been blessed by the gods.");
@@ -284,7 +196,7 @@ void set_weapon_bless_info(player_type *creature_ptr, self_info_type *si_ptr)
         si_ptr->info[si_ptr->line++] = _("あなたの武器は敵から生命力を吸収する。", "Your weapon drains life from your foes.");
 }
 
-void set_special_attack_info(player_type *creature_ptr, self_info_type *si_ptr)
+static void set_brand_attack_info(self_info_type *si_ptr)
 {
     if (have_flag(si_ptr->flags, TR_BRAND_ACID))
         si_ptr->info[si_ptr->line++] = _("あなたの武器は敵を溶かす。", "Your weapon melts your foes.");
@@ -302,7 +214,7 @@ void set_special_attack_info(player_type *creature_ptr, self_info_type *si_ptr)
         si_ptr->info[si_ptr->line++] = _("あなたの武器は敵を毒で侵す。", "Your weapon poisons your foes.");
 }
 
-void set_slay_info(player_type *creature_ptr, self_info_type *si_ptr)
+static void set_slay_info(self_info_type *si_ptr)
 {
     if (have_flag(si_ptr->flags, TR_KILL_ANIMAL))
         si_ptr->info[si_ptr->line++] = _("あなたの武器は動物の天敵である。", "Your weapon is a great bane of animals.");
@@ -356,9 +268,9 @@ void set_weapon_effect_info(player_type *creature_ptr, self_info_type *si_ptr)
     if (o_ptr->k_idx == 0)
         return;
 
-    set_weapon_bless_info(creature_ptr, si_ptr);
-    set_special_attack_info(creature_ptr, si_ptr);
-    set_slay_info(creature_ptr, si_ptr);
+    set_weapon_bless_info(si_ptr);
+    set_brand_attack_info(si_ptr);
+    set_slay_info(si_ptr);
     if (have_flag(si_ptr->flags, TR_FORCE_WEAPON))
         si_ptr->info[si_ptr->line++] = _("あなたの武器はMPを使って攻撃する。", "Your weapon causes greate damages using your MP.");
 
@@ -366,32 +278,6 @@ void set_weapon_effect_info(player_type *creature_ptr, self_info_type *si_ptr)
         si_ptr->info[si_ptr->line++] = _("あなたの武器は投げやすい。", "Your weapon can be thrown well.");
 }
 
-void display_self_info(self_info_type *si_ptr)
-{
-    screen_save();
-    for (int k = 1; k < 24; k++)
-        prt("", k, 13);
-
-    prt(_("        あなたの状態:", "     Your Attributes:"), 1, 15);
-    int k = 2;
-    for (int j = 0; j < si_ptr->line; j++) {
-        prt(si_ptr->info[j], k++, 15);
-
-        /* Every 20 entries (lines 2 to 21), start over */
-        if ((k != 22) || (j + 1 >= si_ptr->line))
-            continue;
-
-        prt(_("-- 続く --", "-- more --"), k, 15);
-        inkey();
-        for (; k > 2; k--)
-            prt("", k, 15);
-    }
-
-    prt(_("[何かキーを押すとゲームに戻ります]", "[Press any key to continue]"), k, 13);
-    inkey();
-    screen_load();
-}
-
 /*!
  * @brief 自己分析処理(Nethackからのアイデア) / self-knowledge... idea from nethack.
  * @return なし
diff --git a/src/view/display-self-info.c b/src/view/display-self-info.c
new file mode 100644 (file)
index 0000000..8be0dd9
--- /dev/null
@@ -0,0 +1,121 @@
+#include "view/display-self-info.h"
+#include "io/input-key-acceptor.h"
+#include "player-info/avatar.h"
+#include "player-info/self-info-util.h"
+#include "player/player-race.h"
+#include "term/screen-processor.h"
+
+void display_life_rating(player_type *creature_ptr, self_info_type *si_ptr)
+{
+    creature_ptr->knowledge |= KNOW_STAT | KNOW_HPRATE;
+    strcpy(si_ptr->plev_buf, "");
+    int percent
+        = (int)(((long)creature_ptr->player_hp[PY_MAX_LEVEL - 1] * 200L) / (2 * creature_ptr->hitdie + ((PY_MAX_LEVEL - 1 + 3) * (creature_ptr->hitdie + 1))));
+    sprintf(si_ptr->plev_buf, _("\8c»\8dÝ\82Ì\91Ì\97Í\83\89\83\93\83N : %d/100", "Your current Life Rating is %d/100."), percent);
+    strcpy(si_ptr->buf[0], si_ptr->plev_buf);
+    si_ptr->info[si_ptr->line++] = si_ptr->buf[0];
+    si_ptr->info[si_ptr->line++] = "";
+}
+
+void display_max_base_status(player_type *creature_ptr, self_info_type *si_ptr)
+{
+    si_ptr->info[si_ptr->line++] = _("\94\\97Í\82Ì\8dÅ\91å\92l", "Limits of maximum stats");
+    for (base_status_type v_nr = 0; v_nr < A_MAX; v_nr++) {
+        char stat_desc[80];
+        sprintf(stat_desc, "%s 18/%d", stat_names[v_nr], creature_ptr->stat_max_max[v_nr] - 18);
+        strcpy(si_ptr->s_string[v_nr], stat_desc);
+        si_ptr->info[si_ptr->line++] = si_ptr->s_string[v_nr];
+    }
+}
+
+void display_virtue(player_type *creature_ptr, self_info_type *si_ptr)
+{
+    si_ptr->info[si_ptr->line++] = "";
+    sprintf(si_ptr->plev_buf, _("\8c»\8dÝ\82Ì\91®\90« : %s(%ld)", "Your alignment : %s(%ld)"), your_alignment(creature_ptr), (long int)creature_ptr->align);
+    strcpy(si_ptr->buf[1], si_ptr->plev_buf);
+    si_ptr->info[si_ptr->line++] = si_ptr->buf[1];
+    for (int v_nr = 0; v_nr < 8; v_nr++) {
+        GAME_TEXT vir_name[20];
+        char vir_desc[80];
+        int tester = creature_ptr->virtues[v_nr];
+        strcpy(vir_name, virtue[(creature_ptr->vir_types[v_nr]) - 1]);
+        sprintf(vir_desc, _("\82¨\82Á\82Æ\81B%s\82Ì\8fî\95ñ\82È\82µ\81B", "Oops. No info about %s."), vir_name);
+        if (tester < -100)
+            sprintf(vir_desc, _("[%s]\82Ì\91Î\8bÉ (%d)", "You are the polar opposite of %s (%d)."), vir_name, tester);
+        else if (tester < -80)
+            sprintf(vir_desc, _("[%s]\82Ì\91å\93G (%d)", "You are an arch-enemy of %s (%d)."), vir_name, tester);
+        else if (tester < -60)
+            sprintf(vir_desc, _("[%s]\82Ì\8b­\93G (%d)", "You are a bitter enemy of %s (%d)."), vir_name, tester);
+        else if (tester < -40)
+            sprintf(vir_desc, _("[%s]\82Ì\93G (%d)", "You are an enemy of %s (%d)."), vir_name, tester);
+        else if (tester < -20)
+            sprintf(vir_desc, _("[%s]\82Ì\8dß\8eÒ (%d)", "You have sinned against %s (%d)."), vir_name, tester);
+        else if (tester < 0)
+            sprintf(vir_desc, _("[%s]\82Ì\96À\93¹\8eÒ (%d)", "You have strayed from the path of %s (%d)."), vir_name, tester);
+        else if (tester == 0)
+            sprintf(vir_desc, _("[%s]\82Ì\92\86\97§\8eÒ (%d)", "You are neutral to %s (%d)."), vir_name, tester);
+        else if (tester < 20)
+            sprintf(vir_desc, _("[%s]\82Ì\8f¬\93¿\8eÒ (%d)", "You are somewhat virtuous in %s (%d)."), vir_name, tester);
+        else if (tester < 40)
+            sprintf(vir_desc, _("[%s]\82Ì\92\86\93¿\8eÒ (%d)", "You are virtuous in %s (%d)."), vir_name, tester);
+        else if (tester < 60)
+            sprintf(vir_desc, _("[%s]\82Ì\8d\82\93¿\8eÒ (%d)", "You are very virtuous in %s (%d)."), vir_name, tester);
+        else if (tester < 80)
+            sprintf(vir_desc, _("[%s]\82Ì\94e\8eÒ (%d)", "You are a champion of %s (%d)."), vir_name, tester);
+        else if (tester < 100)
+            sprintf(vir_desc, _("[%s]\82Ì\88Ì\91å\82È\94e\8eÒ (%d)", "You are a great champion of %s (%d)."), vir_name, tester);
+        else
+            sprintf(vir_desc, _("[%s]\82Ì\8bï\8c»\8eÒ (%d)", "You are the living embodiment of %s (%d)."), vir_name, tester);
+
+        strcpy(si_ptr->v_string[v_nr], vir_desc);
+        si_ptr->info[si_ptr->line++] = si_ptr->v_string[v_nr];
+    }
+}
+
+void display_mimic_race_ability(player_type *creature_ptr, self_info_type *si_ptr)
+{
+    switch (creature_ptr->mimic_form) {
+    case MIMIC_DEMON:
+    case MIMIC_DEMON_LORD:
+        sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\92n\8d\96\82©\89Î\89\8a\82Ì\83u\83\8c\83X\82ð\93f\82­\82±\82Æ\82ª\82Å\82«\82é\81B(%d MP)", "You can nether breathe, dam. %d (cost %d)."),
+            3 * creature_ptr->lev, 10 + creature_ptr->lev / 3);
+
+        si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
+        break;
+    case MIMIC_VAMPIRE:
+        if (creature_ptr->lev <= 1)
+            break;
+
+        sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í\93G\82©\82ç %d-%d HP \82Ì\90\96½\97Í\82ð\8bz\8eû\82Å\82«\82é\81B(%d MP)", "You can steal life from a foe, dam. %d-%d (cost %d)."),
+            creature_ptr->lev + MAX(1, creature_ptr->lev / 10), creature_ptr->lev + creature_ptr->lev * MAX(1, creature_ptr->lev / 10),
+            1 + (creature_ptr->lev / 3));
+        si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
+        break;
+    }
+}
+
+void display_self_info(self_info_type *si_ptr)
+{
+    screen_save();
+    for (int k = 1; k < 24; k++)
+        prt("", k, 13);
+
+    prt(_("        \82 \82È\82½\82Ì\8fó\91Ô:", "     Your Attributes:"), 1, 15);
+    int k = 2;
+    for (int j = 0; j < si_ptr->line; j++) {
+        prt(si_ptr->info[j], k++, 15);
+
+        /* Every 20 entries (lines 2 to 21), start over */
+        if ((k != 22) || (j + 1 >= si_ptr->line))
+            continue;
+
+        prt(_("-- \91±\82­ --", "-- more --"), k, 15);
+        inkey();
+        for (; k > 2; k--)
+            prt("", k, 15);
+    }
+
+    prt(_("[\89½\82©\83L\81[\82ð\89\9f\82·\82Æ\83Q\81[\83\80\82É\96ß\82è\82Ü\82·]", "[Press any key to continue]"), k, 13);
+    inkey();
+    screen_load();
+}
diff --git a/src/view/display-self-info.h b/src/view/display-self-info.h
new file mode 100644 (file)
index 0000000..a20751b
--- /dev/null
@@ -0,0 +1,10 @@
+#pragma once
+
+#include "system/angband.h"
+
+typedef struct self_info_type self_info_type;
+void display_life_rating(player_type *creature_ptr, self_info_type *si_ptr);
+void display_max_base_status(player_type *creature_ptr, self_info_type *si_ptr);
+void display_virtue(player_type *creature_ptr, self_info_type *si_ptr);
+void display_mimic_race_ability(player_type *creature_ptr, self_info_type *si_ptr);
+void display_self_info(self_info_type *si_ptr);