From 4343bd2ad8cf01c4c4fd64e6dafe02faadce0129 Mon Sep 17 00:00:00 2001 From: Hourier Date: Mon, 24 Feb 2020 21:20:24 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#39962=20files.c=20=E3=81=8B?= =?utf8?q?=E3=82=89temporary-resistances.c/h=20=E3=82=92=E5=88=86=E9=9B=A2?= =?utf8?q?=20/=20Separated=20temporary-resistances.c/h=20from=20files.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Hengband_vcs2017/Hengband/Hengband.vcxproj | 2 + Hengband_vcs2017/Hengband/Hengband.vcxproj.filters | 6 ++ src/Makefile.am | 3 + src/files.c | 119 +------------------- src/player/temporary-resistances.c | 120 +++++++++++++++++++++ src/player/temporary-resistances.h | 5 + 6 files changed, 137 insertions(+), 118 deletions(-) create mode 100644 src/player/temporary-resistances.c create mode 100644 src/player/temporary-resistances.h diff --git a/Hengband_vcs2017/Hengband/Hengband.vcxproj b/Hengband_vcs2017/Hengband/Hengband.vcxproj index cc924eb35..f6685b9a7 100644 --- a/Hengband_vcs2017/Hengband/Hengband.vcxproj +++ b/Hengband_vcs2017/Hengband/Hengband.vcxproj @@ -214,6 +214,7 @@ + @@ -327,6 +328,7 @@ + diff --git a/Hengband_vcs2017/Hengband/Hengband.vcxproj.filters b/Hengband_vcs2017/Hengband/Hengband.vcxproj.filters index b6fe92d5c..6f1a35f8e 100644 --- a/Hengband_vcs2017/Hengband/Hengband.vcxproj.filters +++ b/Hengband_vcs2017/Hengband/Hengband.vcxproj.filters @@ -427,6 +427,9 @@ player + + player + @@ -836,6 +839,9 @@ player + + player + diff --git a/src/Makefile.am b/src/Makefile.am index 6d1d49973..aaba22f09 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -15,6 +15,9 @@ hengband_SOURCES = \ \ view/process-death.c view/process-death.h \ view/status-first-page.c view/status-first-page.h \ + player/permanent-resistance.c player/permanent-resistance.h \ + player/temporary-resistance.c player/temporary-resistance.h \ + view/display-util.c view/display-util.h \ signal-handlers.c signal-handlers.h core.c core.h files.c files.h \ \ dungeon.c dungeon.h \ diff --git a/src/files.c b/src/files.c index b2966ccef..39f0d2e13 100644 --- a/src/files.c +++ b/src/files.c @@ -19,6 +19,7 @@ #include "view/status-first-page.h" #include "uid-checker.h" #include "player/permanent-resistances.h" +#include "player/temporary-resistances.h" #include "files.h" #include "core.h" @@ -1212,124 +1213,6 @@ static void display_player_middle(player_type *creature_ptr) /*! - * @brief プレイヤーの一時的魔法効果による耐性を返す - * Prints ratings on certain abilities - * @param creature_ptr プレーヤーへの参照ポインタ - * @param flgs フラグを保管する配列 - * @return なし - * @todo - * xtra1.c周りと多重実装になっているのを何とかする - */ -static void tim_player_flags(player_type *creature_ptr, BIT_FLAGS flgs[TR_FLAG_SIZE]) -{ - for (int i = 0; i < TR_FLAG_SIZE; i++) - flgs[i] = 0L; - - if (IS_HERO(creature_ptr) || creature_ptr->shero) - add_flag(flgs, TR_RES_FEAR); - if (creature_ptr->tim_invis) - add_flag(flgs, TR_SEE_INVIS); - if (creature_ptr->tim_regen) - add_flag(flgs, TR_REGEN); - if (is_time_limit_esp(creature_ptr)) - add_flag(flgs, TR_TELEPATHY); - if (IS_FAST(creature_ptr) || creature_ptr->slow) - add_flag(flgs, TR_SPEED); - - if (is_oppose_acid(creature_ptr) && !(creature_ptr->special_defense & DEFENSE_ACID) && !(PRACE_IS_(creature_ptr, RACE_YEEK) && (creature_ptr->lev > 19))) - add_flag(flgs, TR_RES_ACID); - if (is_oppose_elec(creature_ptr) && !(creature_ptr->special_defense & DEFENSE_ELEC)) - add_flag(flgs, TR_RES_ELEC); - if (is_oppose_fire(creature_ptr) && !(creature_ptr->special_defense & DEFENSE_FIRE)) - add_flag(flgs, TR_RES_FIRE); - if (is_oppose_cold(creature_ptr) && !(creature_ptr->special_defense & DEFENSE_COLD)) - add_flag(flgs, TR_RES_COLD); - if (is_oppose_pois(creature_ptr)) - add_flag(flgs, TR_RES_POIS); - - if (creature_ptr->special_attack & ATTACK_ACID) - add_flag(flgs, TR_BRAND_ACID); - if (creature_ptr->special_attack & ATTACK_ELEC) - add_flag(flgs, TR_BRAND_ELEC); - if (creature_ptr->special_attack & ATTACK_FIRE) - add_flag(flgs, TR_BRAND_FIRE); - if (creature_ptr->special_attack & ATTACK_COLD) - add_flag(flgs, TR_BRAND_COLD); - if (creature_ptr->special_attack & ATTACK_POIS) - add_flag(flgs, TR_BRAND_POIS); - if (creature_ptr->special_defense & DEFENSE_ACID) - add_flag(flgs, TR_IM_ACID); - if (creature_ptr->special_defense & DEFENSE_ELEC) - add_flag(flgs, TR_IM_ELEC); - if (creature_ptr->special_defense & DEFENSE_FIRE) - add_flag(flgs, TR_IM_FIRE); - if (creature_ptr->special_defense & DEFENSE_COLD) - add_flag(flgs, TR_IM_COLD); - if (creature_ptr->wraith_form) - add_flag(flgs, TR_REFLECT); - if (creature_ptr->tim_reflect) - add_flag(flgs, TR_REFLECT); - - if (creature_ptr->magicdef) - { - add_flag(flgs, TR_RES_BLIND); - add_flag(flgs, TR_RES_CONF); - add_flag(flgs, TR_REFLECT); - add_flag(flgs, TR_FREE_ACT); - add_flag(flgs, TR_LEVITATION); - } - - if (creature_ptr->tim_res_nether) add_flag(flgs, TR_RES_NETHER); - - if (creature_ptr->tim_sh_fire) add_flag(flgs, TR_SH_FIRE); - - if (creature_ptr->ult_res) - { - add_flag(flgs, TR_RES_FEAR); - add_flag(flgs, TR_RES_LITE); - add_flag(flgs, TR_RES_DARK); - add_flag(flgs, TR_RES_BLIND); - add_flag(flgs, TR_RES_CONF); - add_flag(flgs, TR_RES_SOUND); - add_flag(flgs, TR_RES_SHARDS); - add_flag(flgs, TR_RES_NETHER); - add_flag(flgs, TR_RES_NEXUS); - add_flag(flgs, TR_RES_CHAOS); - add_flag(flgs, TR_RES_DISEN); - add_flag(flgs, TR_REFLECT); - add_flag(flgs, TR_HOLD_EXP); - add_flag(flgs, TR_FREE_ACT); - add_flag(flgs, TR_SH_FIRE); - add_flag(flgs, TR_SH_ELEC); - add_flag(flgs, TR_SH_COLD); - add_flag(flgs, TR_LEVITATION); - add_flag(flgs, TR_LITE_1); - add_flag(flgs, TR_SEE_INVIS); - add_flag(flgs, TR_TELEPATHY); - add_flag(flgs, TR_SLOW_DIGEST); - add_flag(flgs, TR_REGEN); - add_flag(flgs, TR_SUST_STR); - add_flag(flgs, TR_SUST_INT); - add_flag(flgs, TR_SUST_WIS); - add_flag(flgs, TR_SUST_DEX); - add_flag(flgs, TR_SUST_CON); - add_flag(flgs, TR_SUST_CHR); - } - - if (creature_ptr->realm1 != REALM_HEX) return; - - if (hex_spelling(creature_ptr, HEX_DEMON_AURA)) - { - add_flag(flgs, TR_SH_FIRE); - add_flag(flgs, TR_REGEN); - } - - if (hex_spelling(creature_ptr, HEX_ICE_ARMOR)) add_flag(flgs, TR_SH_COLD); - if (hex_spelling(creature_ptr, HEX_SHOCK_CLOAK)) add_flag(flgs, TR_SH_ELEC); -} - - -/*! * @brief プレイヤーの装備一覧をシンボルで並べる * Equippy chars * @param creature_ptr プレーヤーへの参照ポインタ diff --git a/src/player/temporary-resistances.c b/src/player/temporary-resistances.c new file mode 100644 index 000000000..952c690fa --- /dev/null +++ b/src/player/temporary-resistances.c @@ -0,0 +1,120 @@ +#include "temporary-resistances.h" +#include "realm-hex.h" +#include "realm-song.h" + +/*! + * @brief プレイヤーの一時的魔法効果による耐性を返す + * Prints ratings on certain abilities + * @param creature_ptr プレーヤーへの参照ポインタ + * @param flgs フラグを保管する配列 + * @return なし + * @todo + * xtra1.c周りと多重実装になっているのを何とかする + */ +void tim_player_flags(player_type *creature_ptr, BIT_FLAGS flgs[TR_FLAG_SIZE]) +{ + for (int i = 0; i < TR_FLAG_SIZE; i++) + flgs[i] = 0L; + + if (IS_HERO(creature_ptr) || creature_ptr->shero) + add_flag(flgs, TR_RES_FEAR); + if (creature_ptr->tim_invis) + add_flag(flgs, TR_SEE_INVIS); + if (creature_ptr->tim_regen) + add_flag(flgs, TR_REGEN); + if (is_time_limit_esp(creature_ptr)) + add_flag(flgs, TR_TELEPATHY); + if (IS_FAST(creature_ptr) || creature_ptr->slow) + add_flag(flgs, TR_SPEED); + + if (is_oppose_acid(creature_ptr) && !(creature_ptr->special_defense & DEFENSE_ACID) && !(PRACE_IS_(creature_ptr, RACE_YEEK) && (creature_ptr->lev > 19))) + add_flag(flgs, TR_RES_ACID); + if (is_oppose_elec(creature_ptr) && !(creature_ptr->special_defense & DEFENSE_ELEC)) + add_flag(flgs, TR_RES_ELEC); + if (is_oppose_fire(creature_ptr) && !(creature_ptr->special_defense & DEFENSE_FIRE)) + add_flag(flgs, TR_RES_FIRE); + if (is_oppose_cold(creature_ptr) && !(creature_ptr->special_defense & DEFENSE_COLD)) + add_flag(flgs, TR_RES_COLD); + if (is_oppose_pois(creature_ptr)) + add_flag(flgs, TR_RES_POIS); + + if (creature_ptr->special_attack & ATTACK_ACID) + add_flag(flgs, TR_BRAND_ACID); + if (creature_ptr->special_attack & ATTACK_ELEC) + add_flag(flgs, TR_BRAND_ELEC); + if (creature_ptr->special_attack & ATTACK_FIRE) + add_flag(flgs, TR_BRAND_FIRE); + if (creature_ptr->special_attack & ATTACK_COLD) + add_flag(flgs, TR_BRAND_COLD); + if (creature_ptr->special_attack & ATTACK_POIS) + add_flag(flgs, TR_BRAND_POIS); + if (creature_ptr->special_defense & DEFENSE_ACID) + add_flag(flgs, TR_IM_ACID); + if (creature_ptr->special_defense & DEFENSE_ELEC) + add_flag(flgs, TR_IM_ELEC); + if (creature_ptr->special_defense & DEFENSE_FIRE) + add_flag(flgs, TR_IM_FIRE); + if (creature_ptr->special_defense & DEFENSE_COLD) + add_flag(flgs, TR_IM_COLD); + if (creature_ptr->wraith_form) + add_flag(flgs, TR_REFLECT); + if (creature_ptr->tim_reflect) + add_flag(flgs, TR_REFLECT); + + if (creature_ptr->magicdef) + { + add_flag(flgs, TR_RES_BLIND); + add_flag(flgs, TR_RES_CONF); + add_flag(flgs, TR_REFLECT); + add_flag(flgs, TR_FREE_ACT); + add_flag(flgs, TR_LEVITATION); + } + + if (creature_ptr->tim_res_nether) add_flag(flgs, TR_RES_NETHER); + + if (creature_ptr->tim_sh_fire) add_flag(flgs, TR_SH_FIRE); + + if (creature_ptr->ult_res) + { + add_flag(flgs, TR_RES_FEAR); + add_flag(flgs, TR_RES_LITE); + add_flag(flgs, TR_RES_DARK); + add_flag(flgs, TR_RES_BLIND); + add_flag(flgs, TR_RES_CONF); + add_flag(flgs, TR_RES_SOUND); + add_flag(flgs, TR_RES_SHARDS); + add_flag(flgs, TR_RES_NETHER); + add_flag(flgs, TR_RES_NEXUS); + add_flag(flgs, TR_RES_CHAOS); + add_flag(flgs, TR_RES_DISEN); + add_flag(flgs, TR_REFLECT); + add_flag(flgs, TR_HOLD_EXP); + add_flag(flgs, TR_FREE_ACT); + add_flag(flgs, TR_SH_FIRE); + add_flag(flgs, TR_SH_ELEC); + add_flag(flgs, TR_SH_COLD); + add_flag(flgs, TR_LEVITATION); + add_flag(flgs, TR_LITE_1); + add_flag(flgs, TR_SEE_INVIS); + add_flag(flgs, TR_TELEPATHY); + add_flag(flgs, TR_SLOW_DIGEST); + add_flag(flgs, TR_REGEN); + add_flag(flgs, TR_SUST_STR); + add_flag(flgs, TR_SUST_INT); + add_flag(flgs, TR_SUST_WIS); + add_flag(flgs, TR_SUST_DEX); + add_flag(flgs, TR_SUST_CON); + add_flag(flgs, TR_SUST_CHR); + } + + if (creature_ptr->realm1 != REALM_HEX) return; + + if (hex_spelling(creature_ptr, HEX_DEMON_AURA)) + { + add_flag(flgs, TR_SH_FIRE); + add_flag(flgs, TR_REGEN); + } + + if (hex_spelling(creature_ptr, HEX_ICE_ARMOR)) add_flag(flgs, TR_SH_COLD); + if (hex_spelling(creature_ptr, HEX_SHOCK_CLOAK)) add_flag(flgs, TR_SH_ELEC); +} diff --git a/src/player/temporary-resistances.h b/src/player/temporary-resistances.h new file mode 100644 index 000000000..c58580f2a --- /dev/null +++ b/src/player/temporary-resistances.h @@ -0,0 +1,5 @@ +#pragma once + +#include "angband.h" + +void player_flags(player_type *creature_ptr, BIT_FLAGS flgs[TR_FLAG_SIZE]); -- 2.11.0