my fucking fingers
[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 double last_use_time;
45 }
46 *dynamic_boards;
47
48 struct shop_view_slot
49 {
50 struct dynamic_board *db;
51 float view_blend;
52 }
53 shop_view_slots[6];
54
55 struct board_registry
56 {
57 int workshop;
58 u64 uid;
59
60 struct dynamic_board *dynamic;
61
62 char filename[64]; /* if workshop, string version of uid. */
63 u32 filename_hash;
64
65 int ghost;
66 }
67 *registry;
68 u32 registry_count;
69
70 int loading;
71 float interaction_cooldown;
72
73 u32 selected_registry_id;
74 }
75 static global_skateshop;
76
77 #endif /* ENT_SKATESHOP_H */