OSDN Git Service

Merge pull request #765 from sikabane-works/release/3.0.0Alpha17
[hengbandforosx/hengbandosx.git] / src / store / store-util.h
1 #pragma once
2
3 #include "system/angband.h"
4 #include <vector>
5
6 #define STORE_OBJ_LEVEL 5 //!< 通常店舗の階層レベル / Magic Level for normal stores
7
8 enum STORE_TYPE_IDX {
9     STORE_GENERAL   = 0, //!< 店舗の種類: 雑貨屋
10     STORE_ARMOURY   = 1, //!< 店舗の種類: 防具屋
11     STORE_WEAPON    = 2, //!< 店舗の種類: 武器屋
12     STORE_TEMPLE    = 3, //!< 店舗の種類: 寺院
13     STORE_ALCHEMIST = 4, //!< 店舗の種類: 錬金術の店
14     STORE_MAGIC     = 5, //!< 店舗の種類: 魔道具屋
15     STORE_BLACK     = 6, //!< 店舗の種類: ブラック・マーケット
16     STORE_HOME      = 7, //!< 店舗の種類: 我が家
17     STORE_BOOK      = 8, //!< 店舗の種類: 書店
18     STORE_MUSEUM    = 9, //!< 店舗の種類: 博物館
19     STORE_MAX       = 10
20 };
21
22 using store_k_idx = std::vector<KIND_OBJECT_IDX>;
23
24 /*!
25  * @brief 店舗の情報構造体
26  */
27 struct store_type {
28     byte type{};           //!< Store type
29     byte owner{};          //!< Owner index
30     byte extra{};          //!< Unused for now
31     s16b insult_cur{};     //!< Insult counter
32     s16b good_buy{};       //!< Number of "good" buys (3.0.0で廃止)
33     s16b bad_buy{};        //!< Number of "bad" buys (3.0.0で廃止)
34     s32b store_open{};     //!< Closed until this turn
35     s32b last_visit{};     //!< Last visited on this turn
36     store_k_idx regular{}; //!< Table -- Legal regular item kinds
37     store_k_idx table{};   //!< Table -- Legal item kinds
38     s16b stock_num{};      //!< Stock -- Number of entries
39     s16b stock_size{};     //!< Stock -- Total Size of Array
40     object_type *stock{};  //!< Stock -- Actual stock items
41 };
42
43 extern int cur_store_num;
44 extern store_type *st_ptr;
45
46 typedef bool (*black_market_crap_pf)(player_type *, object_type *);
47 typedef bool (*store_will_buy_pf)(player_type *, object_type *);
48 typedef void (*mass_produce_pf)(player_type *, object_type *);
49 void store_delete(void);
50 void store_create(player_type *player_ptr, KIND_OBJECT_IDX k_idx, black_market_crap_pf black_market_crap, store_will_buy_pf store_will_buy, mass_produce_pf mass_produce);
51 void store_item_increase(INVENTORY_IDX item, ITEM_NUMBER num);
52 void store_item_optimize(INVENTORY_IDX item);
53 int store_carry(player_type *player_ptr, object_type *o_ptr);
54 bool store_object_similar(object_type *o_ptr, object_type *j_ptr);