getting stuff working on windows again
[carveJwlIkooP6JGAAIwe30JlM.git] / addon.h
1 #ifndef ADDON_H
2 #define ADDON_H
3
4 #include "workshop.h"
5 #include "workshop_types.h"
6 #define ADDON_MOUNTED_MAX 128
7 #define ADDON_FOLDERNAME_MAX 64
8
9 typedef struct addon_reg addon_reg;
10 struct {
11 struct addon_reg{
12 PublishedFileId_t workshop_id;
13
14 enum workshop_file_type type;
15 u8 metadata[512]; /* vg_msg buffer */
16 u32 metadata_len;
17
18 char foldername[ ADDON_FOLDERNAME_MAX ];
19 u32 foldername_hash;
20 void *userdata;
21
22 enum addon_state{
23 k_addon_state_none,
24 k_addon_state_indexed,
25 k_addon_state_indexed_absent /* gone but not forgotten */
26 }
27 state;
28 }
29 *registry;
30 u32 registry_count;
31
32 /* deffered: updates in main thread */
33 u32 registry_type_counts[k_workshop_file_type_max];
34 }
35 static addon_system;
36
37 static void addon_system_init( void );
38 static u32 addon_count( enum workshop_file_type type );
39 static addon_reg *get_addon_from_index(enum workshop_file_type type, u32 index);
40 static u32 get_index_from_addon( enum workshop_file_type type, addon_reg *a );
41
42 /* scanning routines */
43 VG_STATIC void addon_mount_local_folder( enum workshop_file_type type,
44 const char *base_folder,
45 const char *content_ext );
46 VG_STATIC void addon_mount_workshop_items(void);
47 VG_STATIC void async_addon_reg_update( void *data, u32 size );
48
49 #endif /* ADDON_H */