OSDN Git Service

[Refactor] #2628 ObjectType をItemEntity に変更した
[hengbandforosx/hengbandosx.git] / src / view / object-describer.cpp
index 671cdd7..c6dc9fe 100644 (file)
@@ -3,7 +3,9 @@
 #include "flavor/flavor-describer.h"
 #include "flavor/object-flavor-types.h"
 #include "object-enchant/special-object-flags.h"
+#include "object/tval-types.h"
 #include "perception/object-perception.h"
+#include "player-base/player-class.h"
 #include "realm/realm-names-table.h"
 #include "spell/spell-info.h"
 #include "system/object-type-definition.h"
  * @param player_ptr プレイヤーへの参照ポインタ
  * @param item 残量を表示したいプレイヤーのアイテム所持スロット
  */
-void inven_item_charges(player_type *player_ptr, INVENTORY_IDX item)
+void inven_item_charges(PlayerType *player_ptr, INVENTORY_IDX item)
 {
-    object_type *o_ptr = &player_ptr->inventory_list[item];
-    if ((o_ptr->tval != ItemKindType::STAFF) && (o_ptr->tval != ItemKindType::WAND))
+    auto *o_ptr = &player_ptr->inventory_list[item];
+    if ((o_ptr->tval != ItemKindType::STAFF) && (o_ptr->tval != ItemKindType::WAND)) {
         return;
-    if (!o_ptr->is_known())
+    }
+    if (!o_ptr->is_known()) {
         return;
+    }
 
 #ifdef JP
     if (o_ptr->pval <= 0) {
@@ -48,9 +52,9 @@ void inven_item_charges(player_type *player_ptr, INVENTORY_IDX item)
  * @param player_ptr プレイヤーへの参照ポインタ
  * @param item 残量を表示したいプレイヤーのアイテム所持スロット
  */
-void inven_item_describe(player_type *player_ptr, INVENTORY_IDX item)
+void inven_item_describe(PlayerType *player_ptr, INVENTORY_IDX item)
 {
-    object_type *o_ptr = &player_ptr->inventory_list[item];
+    auto *o_ptr = &player_ptr->inventory_list[item];
     GAME_TEXT o_name[MAX_NLEN];
     describe_flavor(player_ptr, o_name, o_ptr, 0);
 #ifdef JP
@@ -72,19 +76,20 @@ void inven_item_describe(player_type *player_ptr, INVENTORY_IDX item)
  * @details
  * Include list of usable spells for readible books
  */
-void display_koff(player_type *player_ptr, KIND_OBJECT_IDX k_idx)
+void display_koff(PlayerType *player_ptr, KIND_OBJECT_IDX k_idx)
 {
-    object_type forge;
-    object_type *q_ptr;
+    ItemEntity forge;
+    ItemEntity *q_ptr;
     int sval;
     int16_t use_realm;
     GAME_TEXT o_name[MAX_NLEN];
-    for (int y = 0; y < Term->hgt; y++) {
+    for (int y = 0; y < game_term->hgt; y++) {
         term_erase(0, y, 255);
     }
 
-    if (!k_idx)
+    if (!k_idx) {
         return;
+    }
     q_ptr = &forge;
 
     q_ptr->prep(k_idx);
@@ -92,18 +97,23 @@ void display_koff(player_type *player_ptr, KIND_OBJECT_IDX k_idx)
 
     term_putstr(0, 0, -1, TERM_WHITE, o_name);
     sval = q_ptr->sval;
-    use_realm = tval2realm(enum2i(q_ptr->tval));
+    use_realm = tval2realm(q_ptr->tval);
 
     if (player_ptr->realm1 || player_ptr->realm2) {
-        if ((use_realm != player_ptr->realm1) && (use_realm != player_ptr->realm2))
+        if ((use_realm != player_ptr->realm1) && (use_realm != player_ptr->realm2)) {
             return;
+        }
     } else {
-        if ((player_ptr->pclass != CLASS_SORCERER) && (player_ptr->pclass != CLASS_RED_MAGE))
+        PlayerClass pc(player_ptr);
+        if (!pc.is_every_magic()) {
             return;
-        if (!is_magic(use_realm))
+        }
+        if (!is_magic(use_realm)) {
             return;
-        if ((player_ptr->pclass == CLASS_RED_MAGE) && (use_realm != REALM_ARCANE) && (sval > 1))
+        }
+        if (pc.equals(PlayerClassType::RED_MAGE) && (use_realm != REALM_ARCANE) && (sval > 1)) {
             return;
+        }
     }
 
     int num = 0;