OSDN Git Service

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