OSDN Git Service

[Refactor] #40534 Separated describe_digging() and describe_bow() from describe_tval()
authorHourier <hourier@users.sourceforge.jp>
Thu, 9 Jul 2020 11:26:40 +0000 (20:26 +0900)
committerHourier <hourier@users.sourceforge.jp>
Thu, 9 Jul 2020 11:26:45 +0000 (20:26 +0900)
src/flavor/flavor-describer.c

index 3481e73..9cfcc7e 100644 (file)
@@ -94,6 +94,62 @@ static void describe_chest(flavor_type *flavor_ptr)
     describe_chest_trap(flavor_ptr);
 }
 
+static void describe_digging(player_type *player_ptr, flavor_type *flavor_ptr)
+{
+    if (object_is_quest_target(player_ptr, flavor_ptr->o_ptr) && !flavor_ptr->known)
+        return;
+
+    flavor_ptr->t = object_desc_chr(flavor_ptr->t, ' ');
+    flavor_ptr->t = object_desc_chr(flavor_ptr->t, flavor_ptr->p1);
+    flavor_ptr->t = object_desc_num(flavor_ptr->t, flavor_ptr->o_ptr->dd);
+    flavor_ptr->t = object_desc_chr(flavor_ptr->t, 'd');
+    flavor_ptr->t = object_desc_num(flavor_ptr->t, flavor_ptr->o_ptr->ds);
+    flavor_ptr->t = object_desc_chr(flavor_ptr->t, flavor_ptr->p2);
+}
+
+static void describe_bow(player_type *player_ptr, flavor_type *flavor_ptr)
+{
+    flavor_ptr->power = bow_tmul(flavor_ptr->o_ptr->sval);
+    if (have_flag(flavor_ptr->flags, TR_XTRA_MIGHT))
+        flavor_ptr->power++;
+
+    flavor_ptr->t = object_desc_chr(flavor_ptr->t, ' ');
+    flavor_ptr->t = object_desc_chr(flavor_ptr->t, flavor_ptr->p1);
+    flavor_ptr->t = object_desc_chr(flavor_ptr->t, 'x');
+    flavor_ptr->t = object_desc_num(flavor_ptr->t, flavor_ptr->power);
+    flavor_ptr->t = object_desc_chr(flavor_ptr->t, flavor_ptr->p2);
+    flavor_ptr->fire_rate = calc_num_fire(player_ptr, flavor_ptr->o_ptr);
+    if ((flavor_ptr->fire_rate == 0) || (flavor_ptr->power <= 0) || !flavor_ptr->known)
+        return;
+
+    flavor_ptr->fire_rate = bow_energy(flavor_ptr->o_ptr->sval) / flavor_ptr->fire_rate;
+    flavor_ptr->t = object_desc_chr(flavor_ptr->t, ' ');
+    flavor_ptr->t = object_desc_chr(flavor_ptr->t, flavor_ptr->p1);
+    flavor_ptr->t = object_desc_num(flavor_ptr->t, flavor_ptr->fire_rate / 100);
+    flavor_ptr->t = object_desc_chr(flavor_ptr->t, '.');
+    flavor_ptr->t = object_desc_num(flavor_ptr->t, flavor_ptr->fire_rate % 100);
+    flavor_ptr->t = object_desc_str(flavor_ptr->t, "turn");
+    flavor_ptr->t = object_desc_chr(flavor_ptr->t, flavor_ptr->p2);
+}
+
+static void describe_tval(player_type *player_ptr, flavor_type *flavor_ptr)
+{
+    switch (flavor_ptr->o_ptr->tval) {
+    case TV_SHOT:
+    case TV_BOLT:
+    case TV_ARROW:
+    case TV_HAFTED:
+    case TV_POLEARM:
+    case TV_SWORD:
+    case TV_DIGGING:
+        describe_digging(player_ptr, flavor_ptr);
+        break;
+    case TV_BOW:
+        describe_bow(player_ptr, flavor_ptr);
+        break;
+    }
+}
+
 /*!
  * @brief オブジェクトの各表記を返すメイン関数 / Creates a description of the item "o_ptr", and stores it in "out_val".
  * @param player_ptr プレーヤーへの参照ポインタ
@@ -125,51 +181,7 @@ void describe_flavor(player_type *player_ptr, char *buf, object_type *o_ptr, BIT
     if (flavor_ptr->o_ptr->ac)
         flavor_ptr->show_armour = TRUE;
 
-    switch (flavor_ptr->o_ptr->tval) {
-    case TV_SHOT:
-    case TV_BOLT:
-    case TV_ARROW:
-    case TV_HAFTED:
-    case TV_POLEARM:
-    case TV_SWORD:
-    case TV_DIGGING: {
-        if (object_is_quest_target(player_ptr, flavor_ptr->o_ptr) && !flavor_ptr->known)
-            break;
-
-        flavor_ptr->t = object_desc_chr(flavor_ptr->t, ' ');
-        flavor_ptr->t = object_desc_chr(flavor_ptr->t, flavor_ptr->p1);
-        flavor_ptr->t = object_desc_num(flavor_ptr->t, flavor_ptr->o_ptr->dd);
-        flavor_ptr->t = object_desc_chr(flavor_ptr->t, 'd');
-        flavor_ptr->t = object_desc_num(flavor_ptr->t, flavor_ptr->o_ptr->ds);
-        flavor_ptr->t = object_desc_chr(flavor_ptr->t, flavor_ptr->p2);
-        break;
-    }
-    case TV_BOW: {
-        flavor_ptr->power = bow_tmul(flavor_ptr->o_ptr->sval);
-        if (have_flag(flavor_ptr->flags, TR_XTRA_MIGHT))
-            flavor_ptr->power++;
-
-        flavor_ptr->t = object_desc_chr(flavor_ptr->t, ' ');
-        flavor_ptr->t = object_desc_chr(flavor_ptr->t, flavor_ptr->p1);
-        flavor_ptr->t = object_desc_chr(flavor_ptr->t, 'x');
-        flavor_ptr->t = object_desc_num(flavor_ptr->t, flavor_ptr->power);
-        flavor_ptr->t = object_desc_chr(flavor_ptr->t, flavor_ptr->p2);
-        flavor_ptr->fire_rate = calc_num_fire(player_ptr, flavor_ptr->o_ptr);
-        if (flavor_ptr->fire_rate != 0 && flavor_ptr->power > 0 && flavor_ptr->known) {
-            flavor_ptr->fire_rate = bow_energy(flavor_ptr->o_ptr->sval) / flavor_ptr->fire_rate;
-            flavor_ptr->t = object_desc_chr(flavor_ptr->t, ' ');
-            flavor_ptr->t = object_desc_chr(flavor_ptr->t, flavor_ptr->p1);
-            flavor_ptr->t = object_desc_num(flavor_ptr->t, flavor_ptr->fire_rate / 100);
-            flavor_ptr->t = object_desc_chr(flavor_ptr->t, '.');
-            flavor_ptr->t = object_desc_num(flavor_ptr->t, flavor_ptr->fire_rate % 100);
-            flavor_ptr->t = object_desc_str(flavor_ptr->t, "turn");
-            flavor_ptr->t = object_desc_chr(flavor_ptr->t, flavor_ptr->p2);
-        }
-
-        break;
-    }
-    }
-
+    describe_tval(player_ptr, flavor_ptr);
     if (flavor_ptr->known) {
         if (flavor_ptr->show_weapon) {
             flavor_ptr->t = object_desc_chr(flavor_ptr->t, ' ');