From: Hourier Date: Sun, 28 Jun 2020 10:19:31 +0000 (+0900) Subject: [Refactor] #38997 Separated player-realm.c/h from player-status.h X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=52123f59a45028e196f52f09910c934055e0d83d;p=hengband%2Fhengband.git [Refactor] #38997 Separated player-realm.c/h from player-status.h --- diff --git a/Hengband/Hengband/Hengband.vcxproj b/Hengband/Hengband/Hengband.vcxproj index eeb1a15f1..e1c318f68 100644 --- a/Hengband/Hengband/Hengband.vcxproj +++ b/Hengband/Hengband/Hengband.vcxproj @@ -227,6 +227,7 @@ + @@ -651,6 +652,7 @@ + diff --git a/Hengband/Hengband/Hengband.vcxproj.filters b/Hengband/Hengband/Hengband.vcxproj.filters index e06b08a24..8f0f29b50 100644 --- a/Hengband/Hengband/Hengband.vcxproj.filters +++ b/Hengband/Hengband/Hengband.vcxproj.filters @@ -1502,6 +1502,9 @@ object + + player + @@ -3295,6 +3298,9 @@ object + + player + diff --git a/src/Makefile.am b/src/Makefile.am index 4cbd4579e..cd5ca398a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -470,6 +470,7 @@ hengband_SOURCES = \ player/player-personality.c player/player-personality.h \ player/player-race.c player/player-race.h \ player/player-race-types.h \ + player/player-realm.c player/player-realm.h \ player/player-skill.c player/player-skill.h \ player/player-status.c player/player-status.h \ player/player-personalities-types.h \ diff --git a/src/autopick/autopick-entry.c b/src/autopick/autopick-entry.c index 7cb7b4d65..17ead25f2 100644 --- a/src/autopick/autopick-entry.c +++ b/src/autopick/autopick-entry.c @@ -19,6 +19,7 @@ #include "object/object-kind.h" #include "object/object-info.h" #include "perception/object-perception.h" +#include "player/player-realm.h" #include "util/quarks.h" #include "util/string-processor.h" @@ -377,7 +378,7 @@ void autopick_entry_from_object(player_type *player_ptr, autopick_type *entry, o if (o_ptr->tval != TV_ARCANE_BOOK) name = FALSE; } - if (REALM1_BOOK == o_ptr->tval && + if (get_realm1_book(player_ptr) == o_ptr->tval && player_ptr->pclass != CLASS_SORCERER && player_ptr->pclass != CLASS_RED_MAGE) { @@ -385,7 +386,7 @@ void autopick_entry_from_object(player_type *player_ptr, autopick_type *entry, o name = FALSE; } - if (REALM2_BOOK == o_ptr->tval && + if (get_realm2_book(player_ptr) == o_ptr->tval && player_ptr->pclass != CLASS_SORCERER && player_ptr->pclass != CLASS_RED_MAGE) { diff --git a/src/autopick/autopick-matcher.c b/src/autopick/autopick-matcher.c index e22f0e12c..ce394f201 100644 --- a/src/autopick/autopick-matcher.c +++ b/src/autopick/autopick-matcher.c @@ -23,6 +23,7 @@ #include "object/object-value.h" #include "object/object-info.h" #include "object-enchant/special-object-flags.h" +#include "player/player-realm.h" #include "util/string-processor.h" /* @@ -213,14 +214,12 @@ bool is_autopick_match(player_type *player_ptr, object_type *o_ptr, autopick_typ check_book_realm(player_ptr, o_ptr->tval, o_ptr->sval))) return FALSE; - if (IS_FLG(FLG_REALM1) && - (REALM1_BOOK != o_ptr->tval || + if (IS_FLG(FLG_REALM1) && (get_realm1_book(player_ptr) != o_ptr->tval || player_ptr->pclass == CLASS_SORCERER || player_ptr->pclass == CLASS_RED_MAGE)) return FALSE; - if (IS_FLG(FLG_REALM2) && - (REALM2_BOOK != o_ptr->tval || + if (IS_FLG(FLG_REALM2) && (get_realm2_book(player_ptr) != o_ptr->tval || player_ptr->pclass == CLASS_SORCERER || player_ptr->pclass == CLASS_RED_MAGE)) return FALSE; diff --git a/src/cmd-action/cmd-spell.c b/src/cmd-action/cmd-spell.c index 61d631207..7efeead46 100644 --- a/src/cmd-action/cmd-spell.c +++ b/src/cmd-action/cmd-spell.c @@ -34,6 +34,7 @@ #include "player/player-class.h" #include "player/player-damage.h" #include "player/player-effects.h" +#include "player/player-realm.h" #include "player/player-skill.h" #include "player/player-status.h" #include "player/selfinfo.h" @@ -836,8 +837,8 @@ void do_cmd_study(player_type *caster_ptr) /* Access the item's sval */ sval = o_ptr->sval; - if (o_ptr->tval == REALM2_BOOK) increment = 32; - else if (o_ptr->tval != REALM1_BOOK) + if (o_ptr->tval == get_realm2_book(caster_ptr)) increment = 32; + else if (o_ptr->tval != get_realm1_book(caster_ptr)) { if (!get_check(_("本当に魔法の領域を変更しますか?", "Really, change magic realm? "))) return; change_realm2(caster_ptr, tval2realm(o_ptr->tval)); @@ -1095,7 +1096,7 @@ void do_cmd_cast(player_type *caster_ptr) /* Access the item's sval */ sval = o_ptr->sval; - if ((caster_ptr->pclass != CLASS_SORCERER) && (caster_ptr->pclass != CLASS_RED_MAGE) && (o_ptr->tval == REALM2_BOOK)) increment = 32; + if ((caster_ptr->pclass != CLASS_SORCERER) && (caster_ptr->pclass != CLASS_RED_MAGE) && (o_ptr->tval == get_realm2_book(caster_ptr))) increment = 32; /* Track the object kind */ object_kind_track(caster_ptr, o_ptr->k_idx); diff --git a/src/object-hook/hook-magic.c b/src/object-hook/hook-magic.c index 7fdea6ba4..3d5be80bd 100644 --- a/src/object-hook/hook-magic.c +++ b/src/object-hook/hook-magic.c @@ -3,6 +3,7 @@ #include "object/object-flags.h" #include "perception/object-perception.h" #include "player/player-class.h" +#include "player/player-realm.h" #include "realm/realm-names-table.h" #include "system/object-type-definition.h" #include "util/bit-flags-calculator.h" @@ -111,7 +112,7 @@ bool item_tester_learn_spell(player_type *player_ptr, object_type *o_ptr) else if (!is_magic(tval2realm(o_ptr->tval))) return FALSE; - return (REALM1_BOOK == o_ptr->tval) || (REALM2_BOOK == o_ptr->tval) || (choices & (0x0001 << (tval2realm(o_ptr->tval) - 1))); + return (get_realm1_book(player_ptr) == o_ptr->tval) || (get_realm2_book(player_ptr) == o_ptr->tval) || (choices & (0x0001 << (tval2realm(o_ptr->tval) - 1))); } /*! diff --git a/src/object/object-info.c b/src/object/object-info.c index 8ec2ff08a..557e9030e 100644 --- a/src/object/object-info.c +++ b/src/object/object-info.c @@ -21,6 +21,7 @@ #include "object-enchant/object-ego.h" #include "object/object-flags.h" #include "object/object-kind.h" +#include "player/player-realm.h" #include "realm/realm-names-table.h" #include "sv-definition/sv-other-types.h" #include "sv-definition/sv-ring-types.h" @@ -268,7 +269,7 @@ bool check_book_realm(player_type *owner_ptr, const tval_type book_tval, const O return ((book_tval == TV_ARCANE_BOOK) || (book_sval < 2)); } - return (REALM1_BOOK == book_tval || REALM2_BOOK == book_tval); + return (get_realm1_book(owner_ptr) == book_tval || get_realm2_book(owner_ptr) == book_tval); } object_type *ref_item(player_type *owner_ptr, INVENTORY_IDX item) diff --git a/src/player/player-realm.c b/src/player/player-realm.c new file mode 100644 index 000000000..a32205aaa --- /dev/null +++ b/src/player/player-realm.c @@ -0,0 +1,6 @@ +#include "player/player-realm.h" +#include "object/tval-types.h" + +REALM_IDX get_realm1_book(player_type* player_ptr) { return player_ptr->realm1 + TV_LIFE_BOOK - 1; } + +REALM_IDX get_realm2_book(player_type *player_ptr) { return player_ptr->realm2 + TV_LIFE_BOOK - 1; } diff --git a/src/player/player-realm.h b/src/player/player-realm.h new file mode 100644 index 000000000..790e7d40e --- /dev/null +++ b/src/player/player-realm.h @@ -0,0 +1,7 @@ +#pragma once + +#include "system/angband.h" + +/* Magic-books for the realms */ +REALM_IDX get_realm1_book(player_type *player_ptr); +REALM_IDX get_realm2_book(player_type *player_ptr); diff --git a/src/player/player-status.h b/src/player/player-status.h index 267f85b4e..c1383d45b 100644 --- a/src/player/player-status.h +++ b/src/player/player-status.h @@ -34,14 +34,6 @@ #define MAGIC_FAIL_5PERCENT 0x0002 #define MAGIC_GAIN_EXP 0x0004 -/* - * todo ここからp_ptrを消すと、object-hookにある大量の関数ポインタを全部修正する必要がある - * 影響範囲が広すぎるので保留 - * Magic-books for the realms - */ -#define REALM1_BOOK (p_ptr->realm1 + TV_LIFE_BOOK - 1) -#define REALM2_BOOK (p_ptr->realm2 + TV_LIFE_BOOK - 1) - /* no_flowed 判定対象となるスペル */ #define SPELL_DD_S 27 #define SPELL_DD_T 13 diff --git a/src/util/object-sort.c b/src/util/object-sort.c index c70d03c79..82281ccdc 100644 --- a/src/util/object-sort.c +++ b/src/util/object-sort.c @@ -9,6 +9,7 @@ #include "object-hook/hook-enchant.h" #include "object/object-value.h" #include "perception/object-perception.h" +#include "player/player-realm.h" /*! * @brief オブジェクトを定義された基準に従いソートするための関数 / @@ -24,14 +25,14 @@ bool object_sort_comp(player_type *player_ptr, object_type *o_ptr, s32b o_value, if (!j_ptr->k_idx) return TRUE; - if ((o_ptr->tval == REALM1_BOOK) && (j_ptr->tval != REALM1_BOOK)) + if ((o_ptr->tval == get_realm1_book(player_ptr)) && (j_ptr->tval != get_realm1_book(player_ptr))) return TRUE; - if ((j_ptr->tval == REALM1_BOOK) && (o_ptr->tval != REALM1_BOOK)) + if ((j_ptr->tval == get_realm1_book(player_ptr)) && (o_ptr->tval != get_realm1_book(player_ptr))) return FALSE; - if ((o_ptr->tval == REALM2_BOOK) && (j_ptr->tval != REALM2_BOOK)) + if ((o_ptr->tval == get_realm2_book(player_ptr)) && (j_ptr->tval != get_realm2_book(player_ptr))) return TRUE; - if ((j_ptr->tval == REALM2_BOOK) && (o_ptr->tval != REALM2_BOOK)) + if ((j_ptr->tval == get_realm2_book(player_ptr)) && (o_ptr->tval != get_realm2_book(player_ptr))) return FALSE; if (o_ptr->tval > j_ptr->tval)