OSDN Git Service

[Refactor] #38997 Separated player-realm.c/h from player-status.h
authorHourier <hourier@users.sourceforge.jp>
Sun, 28 Jun 2020 10:19:31 +0000 (19:19 +0900)
committerHourier <hourier@users.sourceforge.jp>
Sun, 28 Jun 2020 10:19:31 +0000 (19:19 +0900)
12 files changed:
Hengband/Hengband/Hengband.vcxproj
Hengband/Hengband/Hengband.vcxproj.filters
src/Makefile.am
src/autopick/autopick-entry.c
src/autopick/autopick-matcher.c
src/cmd-action/cmd-spell.c
src/object-hook/hook-magic.c
src/object/object-info.c
src/player/player-realm.c [new file with mode: 0644]
src/player/player-realm.h [new file with mode: 0644]
src/player/player-status.h
src/util/object-sort.c

index eeb1a15..e1c318f 100644 (file)
     <ClCompile Include="..\..\src\object-hook\hook-weapon.c" />\r
     <ClCompile Include="..\..\src\object-hook\hook-armor.c" />\r
     <ClCompile Include="..\..\src\player\bad-status-setter.c" />\r
+    <ClCompile Include="..\..\src\player\player-realm.c" />\r
     <ClCompile Include="..\..\src\spell-kind\spells-curse-removal.c" />\r
     <ClCompile Include="..\..\src\spell-kind\spells-perception.c" />\r
     <ClCompile Include="..\..\src\spell-kind\spells-recall.c" />\r
     <ClInclude Include="..\..\src\object-hook\hook-quest.h" />\r
     <ClInclude Include="..\..\src\object-hook\hook-weapon.h" />\r
     <ClInclude Include="..\..\src\player\bad-status-setter.h" />\r
+    <ClInclude Include="..\..\src\player\player-realm.h" />\r
     <ClInclude Include="..\..\src\player\special-defense-types.h" />\r
     <ClInclude Include="..\..\src\spell-kind\spells-curse-removal.h" />\r
     <ClInclude Include="..\..\src\spell-kind\spells-perception.h" />\r
index e06b08a..8f0f29b 100644 (file)
     <ClCompile Include="..\..\src\object\item-tester-hooker.c">
       <Filter>object</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\player\player-realm.c">
+      <Filter>player</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\src\cmd\cmd-basic.h">
     <ClInclude Include="..\..\src\object\item-tester-hooker.h">
       <Filter>object</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\player\player-realm.h">
+      <Filter>player</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <None Include="..\..\src\wall.bmp" />
index 4cbd457..cd5ca39 100644 (file)
@@ -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 \
index 7cb7b4d..17ead25 100644 (file)
@@ -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)
        {
index e22f0e1..ce394f2 100644 (file)
@@ -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;
index 61d6312..7efeead 100644 (file)
@@ -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);
index 7fdea6b..3d5be80 100644 (file)
@@ -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)));
 }
 
 /*!
index 8ec2ff0..557e903 100644 (file)
@@ -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 (file)
index 0000000..a32205a
--- /dev/null
@@ -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 (file)
index 0000000..790e7d4
--- /dev/null
@@ -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);
index 267f85b..c1383d4 100644 (file)
 #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
index c70d03c..82281cc 100644 (file)
@@ -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)