OSDN Git Service

[Refactor] #1642 Separated moisten() from execute()
authorHourier <66951241+Hourier@users.noreply.github.com>
Thu, 10 Mar 2022 09:24:54 +0000 (18:24 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Fri, 11 Mar 2022 11:47:14 +0000 (20:47 +0900)
src/object-use/quaff/quaff-execution.cpp
src/object-use/quaff/quaff-execution.h

index 26dda76..e3efc8d 100644 (file)
@@ -113,31 +113,7 @@ void ObjectQuaffEntity::execute(INVENTORY_IDX item)
         return;
     }
 
-    switch (PlayerRace(this->player_ptr).food()) {
-    case PlayerRaceFoodType::WATER:
-        msg_print(_("水分を取り込んだ。", "You are moistened."));
-        set_food(this->player_ptr, std::min<short>(this->player_ptr->food + o_ref.pval + std::max<short>(0, o_ref.pval * 10) + 2000, PY_FOOD_MAX - 1));
-        break;
-    case PlayerRaceFoodType::OIL:
-        if (o_ref.tval != ItemKindType::FLASK) {
-            set_food(this->player_ptr, this->player_ptr->food + ((o_ref.pval) / 20));
-            break;
-        }
-
-        msg_print(_("オイルを補給した。", "You replenish yourself with the oil."));
-        set_food(this->player_ptr, this->player_ptr->food + 5000);
-        break;
-    case PlayerRaceFoodType::BLOOD:
-        (void)set_food(this->player_ptr, this->player_ptr->food + (o_ref.pval / 10));
-        break;
-    case PlayerRaceFoodType::MANA:
-    case PlayerRaceFoodType::CORPSE:
-        set_food(this->player_ptr, this->player_ptr->food + ((o_ref.pval) / 20));
-        break;
-    default:
-        (void)set_food(this->player_ptr, this->player_ptr->food + o_ref.pval);
-        break;
-    }
+    this->moisten(o_ref);
 }
 
 bool ObjectQuaffEntity::can_quaff()
@@ -162,3 +138,32 @@ ObjectType ObjectQuaffEntity::copy_object(const INVENTORY_IDX item)
     o_val.number = 1;
     return o_val;
 }
+
+void ObjectQuaffEntity::moisten(const ObjectType &o_ref)
+{
+    switch (PlayerRace(this->player_ptr).food()) {
+    case PlayerRaceFoodType::WATER:
+        msg_print(_("水分を取り込んだ。", "You are moistened."));
+        set_food(this->player_ptr, std::min<short>(this->player_ptr->food + o_ref.pval + std::max<short>(0, o_ref.pval * 10) + 2000, PY_FOOD_MAX - 1));
+        return;
+    case PlayerRaceFoodType::OIL:
+        if (o_ref.tval != ItemKindType::FLASK) {
+            set_food(this->player_ptr, this->player_ptr->food + ((o_ref.pval) / 20));
+            return;
+        }
+
+        msg_print(_("オイルを補給した。", "You replenish yourself with the oil."));
+        set_food(this->player_ptr, this->player_ptr->food + 5000);
+        return;
+    case PlayerRaceFoodType::BLOOD:
+        (void)set_food(this->player_ptr, this->player_ptr->food + (o_ref.pval / 10));
+        return;
+    case PlayerRaceFoodType::MANA:
+    case PlayerRaceFoodType::CORPSE:
+        set_food(this->player_ptr, this->player_ptr->food + ((o_ref.pval) / 20));
+        return;
+    default:
+        (void)set_food(this->player_ptr, this->player_ptr->food + o_ref.pval);
+        return;
+    }
+}
index d16bfdb..1202d8f 100644 (file)
@@ -16,4 +16,5 @@ private:
 
     bool can_quaff();
     ObjectType copy_object(const INVENTORY_IDX item);
+    void moisten(const ObjectType &o_ref);
 };