3 #include "system/angband.h"
5 #include "util/enum-converter.h"
6 #include "util/enum-range.h"
11 constexpr DEPTH STORE_OBJ_STD_LEVEL = 5; //!< 通常店舗の標準階層レベル / Magic Level for normal stores
13 enum class StoreSaleType : int {
14 GENERAL = 0, //!< 店舗の種類: 雑貨屋
15 ARMOURY = 1, //!< 店舗の種類: 防具屋
16 WEAPON = 2, //!< 店舗の種類: 武器屋
17 TEMPLE = 3, //!< 店舗の種類: 寺院
18 ALCHEMIST = 4, //!< 店舗の種類: 錬金術の店
19 MAGIC = 5, //!< 店舗の種類: 魔道具屋
20 BLACK = 6, //!< 店舗の種類: ブラック・マーケット
21 HOME = 7, //!< 店舗の種類: 我が家
22 BOOK = 8, //!< 店舗の種類: 書店
23 MUSEUM = 9, //!< 店舗の種類: 博物館
26 constexpr int MAX_STORES = enum2i(StoreSaleType::MAX); /*!< 店舗の種類最大数 / Total number of stores (see "store.c", etc) */
28 constexpr auto STORE_SALE_TYPE_LIST = EnumRange(StoreSaleType::GENERAL, StoreSaleType::MUSEUM);
30 using store_k_idx = std::vector<short>;
37 byte type{}; //!< Store type
38 byte owner{}; //!< Owner index
39 byte extra{}; //!< Unused for now
40 int16_t insult_cur{}; //!< Insult counter
41 int16_t good_buy{}; //!< Number of "good" buys (3.0.0で廃止)
42 int16_t bad_buy{}; //!< Number of "bad" buys (3.0.0で廃止)
43 int32_t store_open{}; //!< Closed until this turn
44 int32_t last_visit{}; //!< Last visited on this turn
45 store_k_idx regular{}; //!< Table -- Legal regular item kinds
46 store_k_idx table{}; //!< Table -- Legal item kinds
47 int16_t stock_num{}; //!< Stock -- Number of entries
48 int16_t stock_size{}; //!< Stock -- Total Size of Array
49 std::unique_ptr<ItemEntity[]> stock; //!< Stock -- Actual stock items
51 store_type() = default;
52 store_type(const store_type &) = delete;
53 store_type &operator=(const store_type &) = delete;
56 extern store_type *st_ptr;
59 void store_delete(void);
60 std::vector<PARAMETER_VALUE> store_same_magic_device_pvals(ItemEntity *j_ptr);
61 void store_item_increase(INVENTORY_IDX item, ITEM_NUMBER num);
62 void store_item_optimize(INVENTORY_IDX item);
63 int store_carry(ItemEntity *o_ptr);
64 bool store_object_similar(ItemEntity *o_ptr, ItemEntity *j_ptr);