e7acd43255d456db1d2bb291431eafcba768ff58
[carveJwlIkooP6JGAAIwe30JlM.git] / ent_skateshop.h
1 #ifndef ENT_SKATESHOP_H
2 #define ENT_SKATESHOP_H
3
4 #include "world.h"
5 #include "player.h"
6
7 #define MAX_LOCAL_BOARDS 64
8 #define BILL_TIN_BOARDS 1
9 #define MAX_DYNAMIC_BOARDS 9
10
11 struct{
12 v3f look_target;
13 ent_skateshop *ptr_ent;
14
15 int active;
16 float factive;
17
18 enum skateshop_loc{
19 k_skateshop_loc_page__viewing,
20
21 k_skateshop_loc_select_use,
22 k_skateshop_loc_select_cancel,
23 k_skateshop_loc_select_upload,
24 k_skateshop_loc_page__selected,
25
26 k_skateshop_loc_page__upload,
27 }
28 interface_loc;
29
30 struct dynamic_board
31 {
32 enum dynamic_board_state{
33 k_dynamic_board_state_none,
34 k_dynamic_board_state_loaded,
35 k_dynamic_board_state_loading,
36 }
37 state;
38
39 u32 ref_count;
40
41 struct player_board board;
42
43 u32 registry_id;
44
45 double last_use_time;
46 }
47 *dynamic_boards;
48
49 struct shop_view_slot
50 {
51 struct dynamic_board *db;
52 float view_blend;
53 }
54 shop_view_slots[6];
55
56 struct board_registry
57 {
58 int workshop;
59 u64 uid;
60
61 struct dynamic_board *dynamic;
62
63 char filename[64]; /* if workshop, string version of uid. */
64 u32 filename_hash;
65
66 int ghost;
67 }
68 *registry;
69 u32 registry_count;
70
71 int loading;
72 float interaction_cooldown;
73
74 u32 selected_registry_id;
75 }
76 static global_skateshop;
77
78 #endif /* ENT_SKATESHOP_H */