OSDN Git Service

[Style] clang-format をすべてのヘッダファイルにも適用する
[hengbandforosx/hengbandosx.git] / src / object / object-info.cpp
index 6555e8e..d960486 100644 (file)
 #include "object-enchant/object-ego.h"
 #include "object/object-flags.h"
 #include "object/object-kind.h"
+#include "player-base/player-class.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"
 #include "system/floor-type-definition.h"
-#include "system/object-type-definition.h"
 #include "system/monster-race-definition.h"
+#include "system/object-type-definition.h"
 #include "system/player-type-definition.h"
 #include "term/term-color-types.h"
 #include "util/bit-flags-calculator.h"
@@ -38,7 +39,7 @@
  * @param o_ptr 名称を取得する元のオブジェクト構造体参照ポインタ
  * @return concptr 発動名称を返す文字列ポインタ
  */
-static concptr item_activation_dragon_breath(object_type *o_ptr)
+static concptr item_activation_dragon_breath(ObjectType *o_ptr)
 {
     static char desc[256];
     int n = 0;
@@ -48,8 +49,9 @@ static concptr item_activation_dragon_breath(object_type *o_ptr)
 
     for (int i = 0; dragonbreath_info[i].flag != 0; i++) {
         if (flgs.has(dragonbreath_info[i].flag)) {
-            if (n > 0)
+            if (n > 0) {
                 strcat(desc, _("、", ", "));
+            }
 
             strcat(desc, dragonbreath_info[i].name);
             n++;
@@ -57,7 +59,7 @@ static concptr item_activation_dragon_breath(object_type *o_ptr)
     }
 
     strcat(desc, _("のブレス(250)", " (250)"));
-    return (desc);
+    return desc;
 }
 
 /*!
@@ -65,7 +67,7 @@ static concptr item_activation_dragon_breath(object_type *o_ptr)
  * @param o_ptr 名称を取得する元のオブジェクト構造体参照ポインタ
  * @return concptr 発動名称を返す文字列ポインタ
  */
-static concptr item_activation_aux(object_type *o_ptr)
+static concptr item_activation_aux(ObjectType *o_ptr)
 {
     static char activation_detail[512];
     char timeout[64];
@@ -80,19 +82,22 @@ static concptr item_activation_aux(object_type *o_ptr)
     case RandomArtActType::NONE:
         break;
     case RandomArtActType::BR_FIRE:
-        if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES))
+        if ((o_ptr->tval == ItemKindType::RING) && (o_ptr->sval == SV_RING_FLAMES)) {
             desc = _("火炎のブレス (200) と火への耐性", "breathe fire (200) and resist fire");
+        }
         break;
     case RandomArtActType::BR_COLD:
-        if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE))
+        if ((o_ptr->tval == ItemKindType::RING) && (o_ptr->sval == SV_RING_ICE)) {
             desc = _("冷気のブレス (200) と冷気への耐性", "breathe cold (200) and resist cold");
+        }
         break;
     case RandomArtActType::BR_DRAGON:
         desc = item_activation_dragon_breath(o_ptr);
         break;
     case RandomArtActType::AGGRAVATE:
-        if (o_ptr->name1 == ART_HYOUSIGI)
+        if (o_ptr->fixed_artifact_idx == ART_HYOUSIGI) {
             desc = _("拍子木を打ちならす", "beat wooden clappers");
+        }
         break;
     case RandomArtActType::ACID_BALL_AND_RESISTANCE:
         desc = _("アシッド・ボール (100) と酸への耐性", "ball of acid (100) and resist acid");
@@ -138,10 +143,10 @@ static concptr item_activation_aux(object_type *o_ptr)
         /* Activations that have special timeout */
         switch (act_ptr->index) {
         case RandomArtActType::BR_FIRE:
-            sprintf(timeout, _("%d ターン毎", "every %d turns"), ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES)) ? 200 : 250);
+            sprintf(timeout, _("%d ターン毎", "every %d turns"), ((o_ptr->tval == ItemKindType::RING) && (o_ptr->sval == SV_RING_FLAMES)) ? 200 : 250);
             break;
         case RandomArtActType::BR_COLD:
-            sprintf(timeout, _("%d ターン毎", "every %d turns"), ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE)) ? 200 : 250);
+            sprintf(timeout, _("%d ターン毎", "every %d turns"), ((o_ptr->tval == ItemKindType::RING) && (o_ptr->sval == SV_RING_ICE)) ? 200 : 250);
             break;
         case RandomArtActType::TERROR:
             strcpy(timeout, _("3*(レベル+10) ターン毎", "every 3 * (level+10) turns"));
@@ -171,21 +176,22 @@ static concptr item_activation_aux(object_type *o_ptr)
  * @param o_ptr 名称を取得する元のオブジェクト構造体参照ポインタ
  * @return concptr 発動名称を返す文字列ポインタ
  */
-concptr activation_explanation(object_type *o_ptr)
+concptr activation_explanation(ObjectType *o_ptr)
 {
     auto flgs = object_flags(o_ptr);
-    if (flgs.has_not(TR_ACTIVATE))
-        return (_("なし", "nothing"));
+    if (flgs.has_not(TR_ACTIVATE)) {
+        return _("なし", "nothing");
+    }
 
     if (activation_index(o_ptr) > RandomArtActType::NONE) {
         return item_activation_aux(o_ptr);
     }
 
-    if (o_ptr->tval == TV_WHISTLE) {
+    if (o_ptr->tval == ItemKindType::WHISTLE) {
         return _("ペット呼び寄せ : 100+d100ターン毎", "call pet every 100+d100 turns");
     }
 
-    if (o_ptr->tval == TV_CAPTURE) {
+    if (o_ptr->tval == ItemKindType::CAPTURE) {
         return _("モンスターを捕える、又は解放する。", "captures or releases a monster.");
     }
 
@@ -199,7 +205,10 @@ concptr activation_explanation(object_type *o_ptr)
  * @return 対応するアルファベット
  * @details Note that the label does NOT distinguish inven/equip.
  */
-char index_to_label(int i) { return (i < INVEN_MAIN_HAND) ? (I2A(i)) : (I2A(i - INVEN_MAIN_HAND)); }
+char index_to_label(int i)
+{
+    return i < INVEN_MAIN_HAND ? I2A(i) : I2A(i - INVEN_MAIN_HAND);
+}
 
 /*!
  * @brief オブジェクトの該当装備部位IDを返す /
@@ -207,61 +216,66 @@ char index_to_label(int i) { return (i < INVEN_MAIN_HAND) ? (I2A(i)) : (I2A(i -
  * @param o_ptr 名称を取得する元のオブジェクト構造体参照ポインタ
  * @return 対応する装備部位ID
  */
-int16_t wield_slot(player_type *player_ptr, const object_type *o_ptr)
+int16_t wield_slot(PlayerType *player_ptr, const ObjectType *o_ptr)
 {
     switch (o_ptr->tval) {
-    case TV_DIGGING:
-    case TV_HAFTED:
-    case TV_POLEARM:
-    case TV_SWORD: {
-        if (!player_ptr->inventory_list[INVEN_MAIN_HAND].k_idx)
-            return (INVEN_MAIN_HAND);
-        if (player_ptr->inventory_list[INVEN_SUB_HAND].k_idx)
-            return (INVEN_MAIN_HAND);
-        return (INVEN_SUB_HAND);
+    case ItemKindType::DIGGING:
+    case ItemKindType::HAFTED:
+    case ItemKindType::POLEARM:
+    case ItemKindType::SWORD: {
+        if (!player_ptr->inventory_list[INVEN_MAIN_HAND].k_idx) {
+            return INVEN_MAIN_HAND;
+        }
+        if (player_ptr->inventory_list[INVEN_SUB_HAND].k_idx) {
+            return INVEN_MAIN_HAND;
+        }
+        return INVEN_SUB_HAND;
     }
-    case TV_CAPTURE:
-    case TV_CARD:
-    case TV_SHIELD: {
-        if (!player_ptr->inventory_list[INVEN_SUB_HAND].k_idx)
-            return (INVEN_SUB_HAND);
-        if (player_ptr->inventory_list[INVEN_MAIN_HAND].k_idx)
-            return (INVEN_SUB_HAND);
-        return (INVEN_MAIN_HAND);
+    case ItemKindType::CAPTURE:
+    case ItemKindType::CARD:
+    case ItemKindType::SHIELD: {
+        if (!player_ptr->inventory_list[INVEN_SUB_HAND].k_idx) {
+            return INVEN_SUB_HAND;
+        }
+        if (player_ptr->inventory_list[INVEN_MAIN_HAND].k_idx) {
+            return INVEN_SUB_HAND;
+        }
+        return INVEN_MAIN_HAND;
     }
-    case TV_BOW: {
-        return (INVEN_BOW);
+    case ItemKindType::BOW: {
+        return INVEN_BOW;
     }
-    case TV_RING: {
-        if (!player_ptr->inventory_list[INVEN_MAIN_RING].k_idx)
-            return (INVEN_MAIN_RING);
+    case ItemKindType::RING: {
+        if (!player_ptr->inventory_list[INVEN_MAIN_RING].k_idx) {
+            return INVEN_MAIN_RING;
+        }
 
-        return (INVEN_SUB_RING);
+        return INVEN_SUB_RING;
     }
-    case TV_AMULET:
-    case TV_WHISTLE: {
-        return (INVEN_NECK);
+    case ItemKindType::AMULET:
+    case ItemKindType::WHISTLE: {
+        return INVEN_NECK;
     }
-    case TV_LITE: {
-        return (INVEN_LITE);
+    case ItemKindType::LITE: {
+        return INVEN_LITE;
     }
-    case TV_DRAG_ARMOR:
-    case TV_HARD_ARMOR:
-    case TV_SOFT_ARMOR: {
-        return (INVEN_BODY);
+    case ItemKindType::DRAG_ARMOR:
+    case ItemKindType::HARD_ARMOR:
+    case ItemKindType::SOFT_ARMOR: {
+        return INVEN_BODY;
     }
-    case TV_CLOAK: {
-        return (INVEN_OUTER);
+    case ItemKindType::CLOAK: {
+        return INVEN_OUTER;
     }
-    case TV_CROWN:
-    case TV_HELM: {
-        return (INVEN_HEAD);
+    case ItemKindType::CROWN:
+    case ItemKindType::HELM: {
+        return INVEN_HEAD;
     }
-    case TV_GLOVES: {
-        return (INVEN_ARMS);
+    case ItemKindType::GLOVES: {
+        return INVEN_ARMS;
     }
-    case TV_BOOTS: {
-        return (INVEN_FEET);
+    case ItemKindType::BOOTS: {
+        return INVEN_FEET;
     }
 
     default:
@@ -278,23 +292,27 @@ int16_t wield_slot(player_type *player_ptr, const object_type *o_ptr)
  * @param book_sval ベースアイテムのsval
  * @return 使用可能な魔法書ならばTRUEを返す。
  */
-bool check_book_realm(player_type *player_ptr, const tval_type book_tval, const OBJECT_SUBTYPE_VALUE book_sval)
+bool check_book_realm(PlayerType *player_ptr, const ItemKindType book_tval, const OBJECT_SUBTYPE_VALUE book_sval)
 {
-    if (book_tval < TV_LIFE_BOOK)
+    if (book_tval < ItemKindType::LIFE_BOOK) {
         return false;
-    if (player_ptr->pclass == CLASS_SORCERER) {
+    }
+
+    PlayerClass pc(player_ptr);
+    if (pc.equals(PlayerClassType::SORCERER)) {
         return is_magic(tval2realm(book_tval));
-    } else if (player_ptr->pclass == CLASS_RED_MAGE) {
-        if (is_magic(tval2realm(book_tval)))
-            return ((book_tval == TV_ARCANE_BOOK) || (book_sval < 2));
+    } else if (pc.equals(PlayerClassType::RED_MAGE)) {
+        if (is_magic(tval2realm(book_tval))) {
+            return ((book_tval == ItemKindType::ARCANE_BOOK) || (book_sval < 2));
+        }
     }
 
-    return (get_realm1_book(player_ptr) == book_tval || get_realm2_book(player_ptr) == book_tval);
+    return (get_realm1_book(player_ptr) == book_tval) || (get_realm2_book(player_ptr) == book_tval);
 }
 
-object_type *ref_item(player_type *player_ptr, INVENTORY_IDX item)
+ObjectType *ref_item(PlayerType *player_ptr, INVENTORY_IDX item)
 {
-    floor_type *floor_ptr = player_ptr->current_floor_ptr;
+    auto *floor_ptr = player_ptr->current_floor_ptr;
     return item >= 0 ? &player_ptr->inventory_list[item] : &(floor_ptr->o_list[0 - item]);
 }
 
@@ -303,11 +321,11 @@ object_type *ref_item(player_type *player_ptr, INVENTORY_IDX item)
  * Use "flavor" if available.
  * Default to user definitions.
  */
-TERM_COLOR object_attr(object_type *o_ptr)
+TERM_COLOR object_attr(ObjectType *o_ptr)
 {
     return ((k_info[o_ptr->k_idx].flavor)
-            ? (k_info[k_info[o_ptr->k_idx].flavor].x_attr)
-            : ((!o_ptr->k_idx || (o_ptr->tval != TV_CORPSE) || (o_ptr->sval != SV_CORPSE) || (k_info[o_ptr->k_idx].x_attr != TERM_DARK))
-                    ? (k_info[o_ptr->k_idx].x_attr)
-                    : (r_info[o_ptr->pval].x_attr)));
+                ? (k_info[k_info[o_ptr->k_idx].flavor].x_attr)
+                : ((!o_ptr->k_idx || (o_ptr->tval != ItemKindType::CORPSE) || (o_ptr->sval != SV_CORPSE) || (k_info[o_ptr->k_idx].x_attr != TERM_DARK))
+                          ? (k_info[o_ptr->k_idx].x_attr)
+                          : (r_info[o_ptr->pval].x_attr)));
 }