OSDN Git Service

[Refactor] StoreSaleType の範囲に対する処理
authorHabu <habu1010+github@gmail.com>
Mon, 11 Oct 2021 22:20:30 +0000 (07:20 +0900)
committerHabu <habu1010+github@gmail.com>
Mon, 11 Oct 2021 22:24:41 +0000 (07:24 +0900)
汎用性に欠けるので StoreSaleType のイテレーション専用の関数群を削除し、
EnumRange クラスを代わりに使用する。

src/birth/character-builder.cpp
src/market/building-initializer.cpp
src/store/black-market.cpp
src/store/store-util.cpp
src/store/store-util.h

index 6351c0e..301e1e1 100644 (file)
@@ -100,7 +100,7 @@ void player_birth(player_type *player_ptr)
 
     write_birth_diary(player_ptr);
     for (int i = 1; i < max_towns; i++) {
-        for (auto sst : StoreSaleType()) {
+        for (auto sst : STORE_SALE_TYPE_LIST) {
             store_init(i, sst);
         }
     }
index 76d227d..9a391bc 100644 (file)
@@ -19,7 +19,7 @@ errr init_towns(void)
     town_info = std::vector<town_type>(max_towns);
     for (int i = 1; i < max_towns; i++) {
         town_info[i].store = std::vector<store_type>(MAX_STORES);
-        for (auto sst : StoreSaleType()) {
+        for (auto sst : STORE_SALE_TYPE_LIST) {
             store_type *store_ptr = &town_info[i].store[enum2i(sst)];
             if ((i > 1) && (sst == StoreSaleType::MUSEUM || sst == StoreSaleType::HOME))
                 continue;
index 4a1089c..066b0c2 100644 (file)
@@ -31,7 +31,7 @@ bool black_market_crap(player_type *player_ptr, object_type *o_ptr)
     if (o_ptr->to_d > 0)
         return false;
 
-    for (auto sst : StoreSaleType()) {
+    for (auto sst : STORE_SALE_TYPE_LIST) {
         if (sst == StoreSaleType::HOME || sst == StoreSaleType::MUSEUM) {
             continue;
         }
index 248c0b7..102fae9 100644 (file)
 StoreSaleType cur_store_num = StoreSaleType::GENERAL;
 store_type *st_ptr = nullptr;
 
-StoreSaleType begin(StoreSaleType)
-{
-    return StoreSaleType::GENERAL;
-}
-
-StoreSaleType end(StoreSaleType)
-{
-    return StoreSaleType::MAX;
-}
-
-StoreSaleType operator*(StoreSaleType s)
-{
-    return s;
-}
-
-StoreSaleType operator++(StoreSaleType &s)
-{
-    return s = StoreSaleType(std::underlying_type<StoreSaleType>::type(s) + 1);
-}
-
 /*!
  * @brief 店舗のオブジェクト数を増やす /
  * Add the item "o_ptr" to a real stores inventory.
index 7dd1e81..44e4227 100644 (file)
@@ -2,6 +2,8 @@
 
 #include "system/angband.h"
 
+#include "util/enum-range.h"
+
 #include <memory>
 #include <vector>
 
@@ -21,10 +23,7 @@ enum class StoreSaleType {
     MAX       = 10
 };
 
-StoreSaleType begin(StoreSaleType);
-StoreSaleType end(StoreSaleType);
-StoreSaleType operator*(StoreSaleType s);
-StoreSaleType operator++(StoreSaleType &s);
+constexpr auto STORE_SALE_TYPE_LIST = EnumRange(StoreSaleType::GENERAL, StoreSaleType::MUSEUM);
 
 using store_k_idx = std::vector<KIND_OBJECT_IDX>;