From 8a9da66ac6c20de10798d1e6b6611a8e83e7a1b1 Mon Sep 17 00:00:00 2001 From: Hourier Date: Tue, 9 Jun 2020 23:28:35 +0900 Subject: [PATCH] [Refactor] #40014 Separated display-monster-status.c/h from monster1.c/h --- Hengband/Hengband/Hengband.vcxproj | 2 + Hengband/Hengband/Hengband.vcxproj.filters | 6 +++ src/Makefile.am | 1 + src/cmd/cmd-basic.c | 1 + src/combat/shoot.c | 1 + src/effect/effect-monster-util.c | 2 +- src/io/targeting.c | 2 +- src/knowledge/knowledge-monsters.c | 2 +- src/monster/monster1.c | 59 ------------------------------ src/monster/monster1.h | 1 - src/mspell/mspell-special.c | 2 +- src/view/display-monster-status.c | 46 +++++++++++++++++++++++ src/view/display-monster-status.h | 6 +++ 13 files changed, 67 insertions(+), 64 deletions(-) create mode 100644 src/view/display-monster-status.c create mode 100644 src/view/display-monster-status.h diff --git a/Hengband/Hengband/Hengband.vcxproj b/Hengband/Hengband/Hengband.vcxproj index 33708c21c..4d37400d6 100644 --- a/Hengband/Hengband/Hengband.vcxproj +++ b/Hengband/Hengband/Hengband.vcxproj @@ -843,6 +843,7 @@ + @@ -908,6 +909,7 @@ + diff --git a/Hengband/Hengband/Hengband.vcxproj.filters b/Hengband/Hengband/Hengband.vcxproj.filters index 940a08bb2..4272a432f 100644 --- a/Hengband/Hengband/Hengband.vcxproj.filters +++ b/Hengband/Hengband/Hengband.vcxproj.filters @@ -1268,6 +1268,9 @@ monster + + view + @@ -2788,6 +2791,9 @@ monster + + view + diff --git a/src/Makefile.am b/src/Makefile.am index 180b1290c..8cc4d1530 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -519,6 +519,7 @@ hengband_SOURCES = \ view/display-fruit.c view/display-fruit.h \ view/display-main-window.c view/display-main-window.h \ view/display-monster-lore.c view/display-monster-lore.h \ + view/display-monster-status.c view/display-monster-status.h \ view/display-player-stat-info.c view/display-player-stat-info.h \ view/display-player-misc-info.c view/display-player-misc-info.h \ view/display-player-middle.c view/display-player-middle.h \ diff --git a/src/cmd/cmd-basic.c b/src/cmd/cmd-basic.c index bb19809fe..c2210203c 100644 --- a/src/cmd/cmd-basic.c +++ b/src/cmd/cmd-basic.c @@ -37,6 +37,7 @@ #include "main/music-definitions-table.h" #include "main/sound-definitions-table.h" #include "mind/snipe-types.h" +#include "monster/monster-death.h" #include "monster/monster-status.h" #include "monster/monster1.h" #include "monster/monster2.h" diff --git a/src/combat/shoot.c b/src/combat/shoot.c index f945f58d3..30fdedb8a 100644 --- a/src/combat/shoot.c +++ b/src/combat/shoot.c @@ -16,6 +16,7 @@ #include "monster-race/race-flags3.h" #include "monster-race/race-flags7.h" #include "monster-race/race-indice-types.h" +#include "monster/monster-death.h" #include "monster/monster-status.h" #include "monster/monster1.h" #include "monster/monster2.h" diff --git a/src/effect/effect-monster-util.c b/src/effect/effect-monster-util.c index 29acc6d92..d9db9dbb0 100644 --- a/src/effect/effect-monster-util.c +++ b/src/effect/effect-monster-util.c @@ -6,8 +6,8 @@ #include "effect/effect-monster-util.h" #include "floor/floor.h" +#include "monster/monster-death.h" #include "monster/monster-status.h" -#include "monster/monster1.h" #include "monster/monster2.h" /*! diff --git a/src/io/targeting.c b/src/io/targeting.c index 89bee27e5..2c25a40ac 100644 --- a/src/io/targeting.c +++ b/src/io/targeting.c @@ -30,7 +30,6 @@ #include "monster/monster-description-types.h" #include "monster/monster-flag-types.h" #include "monster/monster-status.h" -#include "monster/monster1.h" #include "monster/monster2.h" #include "monster/smart-learn-types.h" #include "object-enchant/object-curse.h" @@ -45,6 +44,7 @@ #include "term/term-color-types.h" #include "view/display-main-window.h" #include "view/display-monster-lore.h" +#include "view/display-monster-status.h" #include "world/world.h" /*! diff --git a/src/knowledge/knowledge-monsters.c b/src/knowledge/knowledge-monsters.c index 7ccc2310a..b17f95048 100644 --- a/src/knowledge/knowledge-monsters.c +++ b/src/knowledge/knowledge-monsters.c @@ -18,12 +18,12 @@ #include "monster-race/race-flags7.h" #include "monster/monster-description-types.h" #include "monster/monster-status.h" -#include "monster/monster1.h" #include "monster/monster2.h" #include "monster/smart-learn-types.h" #include "term/term-color-types.h" #include "view/display-main-window.h" // 暫定、後で消す. #include "view/display-monster-lore.h" +#include "view/display-monster-status.h" #include "world/world.h" /* diff --git a/src/monster/monster1.c b/src/monster/monster1.c index bc782909a..b17266dc6 100644 --- a/src/monster/monster1.c +++ b/src/monster/monster1.c @@ -326,65 +326,6 @@ bool monster_has_hostile_align(player_type *player_ptr, monster_type *m_ptr, int } -/* - * Monster health description - */ -concptr look_mon_desc(monster_type *m_ptr, BIT_FLAGS mode) -{ - bool living = monster_living(m_ptr->ap_r_idx); - int perc = m_ptr->maxhp > 0 ? 100L * m_ptr->hp / m_ptr->maxhp : 0; - - concptr desc; - if (m_ptr->hp >= m_ptr->maxhp) - { - desc = living ? _("無傷", "unhurt") : _("無ダメージ", "undamaged"); - } - else if (perc >= 60) - { - desc = living ? _("軽傷", "somewhat wounded") : _("小ダメージ", "somewhat damaged"); - } - else if (perc >= 25) - { - desc = living ? _("負傷", "wounded") : _("中ダメージ", "damaged"); - } - else if (perc >= 10) - { - desc = living ? _("重傷", "badly wounded") : _("大ダメージ", "badly damaged"); - } - else - { - desc = living ? _("半死半生", "almost dead") : _("倒れかけ", "almost destroyed"); - } - - concptr attitude; - if (!(mode & 0x01)) - { - attitude = ""; - } - else if (is_pet(m_ptr)) - { - attitude = _(", ペット", ", pet"); - } - else if (is_friendly(m_ptr)) - { - attitude = _(", 友好的", ", friendly"); - } - else - { - attitude = _("", ""); - } - - concptr clone = (m_ptr->smart & SM_CLONED) ? ", clone" : ""; - monster_race *ap_r_ptr = &r_info[m_ptr->ap_r_idx]; - if (ap_r_ptr->r_tkills && !(m_ptr->mflag2 & MFLAG2_KAGE)) - { - return format(_("レベル%d, %s%s%s", "Level %d, %s%s%s"), ap_r_ptr->level, desc, attitude, clone); - } - - return format(_("レベル???, %s%s%s", "Level ???, %s%s%s"), desc, attitude, clone); -} - - bool is_original_ap_and_seen(player_type *player_ptr, monster_type *m_ptr) { return m_ptr->ml && !player_ptr->image && (m_ptr->ap_r_idx == m_ptr->r_idx); diff --git a/src/monster/monster1.h b/src/monster/monster1.h index a79c305d6..b2a67f295 100644 --- a/src/monster/monster1.h +++ b/src/monster/monster1.h @@ -17,5 +17,4 @@ bool monster_can_cross_terrain(player_type *player_ptr, FEAT_IDX feat, monster_r bool monster_can_enter(player_type *player_ptr, POSITION y, POSITION x, monster_race *r_ptr, BIT_FLAGS16 mode); bool are_enemies(player_type *player_ptr, monster_type *m_ptr1, monster_type *m_ptr2); bool monster_has_hostile_align(player_type *player_ptr, monster_type *m_ptr, int pa_good, int pa_evil, monster_race *r_ptr); -concptr look_mon_desc(monster_type *m_ptr, BIT_FLAGS mode); bool is_original_ap_and_seen(player_type *player_ptr, monster_type *m_ptr); diff --git a/src/mspell/mspell-special.c b/src/mspell/mspell-special.c index 69bd72cb7..cdf4fd491 100644 --- a/src/mspell/mspell-special.c +++ b/src/mspell/mspell-special.c @@ -11,8 +11,8 @@ #include "monster-race/race-flags7.h" #include "monster-race/race-indice-types.h" #include "monster/monster-description-types.h" +#include "monster/monster-death.h" #include "monster/monster-util.h" -#include "monster/monster1.h" #include "monster/monster2.h" #include "mspell/monster-spell.h" #include "mspell/mspell-util.h" diff --git a/src/view/display-monster-status.c b/src/view/display-monster-status.c new file mode 100644 index 000000000..084190bf0 --- /dev/null +++ b/src/view/display-monster-status.c @@ -0,0 +1,46 @@ +#include "view/display-monster-status.h" +#include "monster-race/monster-race-hook.h" +#include "monster/monster-flag-types.h" +#include "monster/monster2.h" +#include "monster/smart-learn-types.h" + +/* + * Monster health description + */ +concptr look_mon_desc(monster_type *m_ptr, BIT_FLAGS mode) +{ + bool living = monster_living(m_ptr->ap_r_idx); + int perc = m_ptr->maxhp > 0 ? 100L * m_ptr->hp / m_ptr->maxhp : 0; + + concptr desc; + if (m_ptr->hp >= m_ptr->maxhp) { + desc = living ? _("無傷", "unhurt") : _("無ダメージ", "undamaged"); + } else if (perc >= 60) { + desc = living ? _("軽傷", "somewhat wounded") : _("小ダメージ", "somewhat damaged"); + } else if (perc >= 25) { + desc = living ? _("負傷", "wounded") : _("中ダメージ", "damaged"); + } else if (perc >= 10) { + desc = living ? _("重傷", "badly wounded") : _("大ダメージ", "badly damaged"); + } else { + desc = living ? _("半死半生", "almost dead") : _("倒れかけ", "almost destroyed"); + } + + concptr attitude; + if (!(mode & 0x01)) { + attitude = ""; + } else if (is_pet(m_ptr)) { + attitude = _(", ペット", ", pet"); + } else if (is_friendly(m_ptr)) { + attitude = _(", 友好的", ", friendly"); + } else { + attitude = _("", ""); + } + + concptr clone = (m_ptr->smart & SM_CLONED) ? ", clone" : ""; + monster_race *ap_r_ptr = &r_info[m_ptr->ap_r_idx]; + if (ap_r_ptr->r_tkills && !(m_ptr->mflag2 & MFLAG2_KAGE)) { + return format(_("レベル%d, %s%s%s", "Level %d, %s%s%s"), ap_r_ptr->level, desc, attitude, clone); + } + + return format(_("レベル???, %s%s%s", "Level ???, %s%s%s"), desc, attitude, clone); +} diff --git a/src/view/display-monster-status.h b/src/view/display-monster-status.h new file mode 100644 index 000000000..1b8cf8818 --- /dev/null +++ b/src/view/display-monster-status.h @@ -0,0 +1,6 @@ +#pragma once + +#include "system/angband.h" +#include "system/monster-type-definition.h" + +concptr look_mon_desc(monster_type *m_ptr, BIT_FLAGS mode); -- 2.11.0