quite a lot of changes
[carveJwlIkooP6JGAAIwe30JlM.git] / workshop.h
1 #ifndef WORKSHOP_H
2 #define WORKSHOP_H
3
4 #define VG_GAME
5 #include "addon_types.h"
6 #include "vg/vg.h"
7 #include "vg/vg_steam_remote_storage.h"
8 #include "skaterift.h"
9 #include "pointcloud.h"
10 #include "vg/vg_steam_auth.h"
11 #include "vg/vg_steam_ugc.h"
12 #include "vg/vg_steam_friends.h"
13 #include "steam.h"
14 #include "ent_skateshop.h"
15
16 struct async_workshop_filepath_info{
17 PublishedFileId_t id;
18 char *buf;
19 u32 len;
20 };
21
22 struct async_workshop_installed_files_info{
23 PublishedFileId_t *buffer;
24 u32 *len; /* inout */
25 };
26
27 struct async_workshop_metadata_info{
28 struct workshop_file_info *info;
29 const char *path;
30 };
31
32
33 #define WORKSHOP_VIEW_PER_PAGE 15
34
35 struct workshop_form{
36 struct {
37 char title[80];
38 char description[512];
39 char author[32];
40 struct ui_dropdown_value submission_type_selection;
41 enum addon_type type;
42
43 PublishedFileId_t file_id; /* 0 if not published yet */
44
45 struct ui_dropdown_value visibility;
46 int submit_title, /* set if the respective controls are touched */
47 submit_description,
48 submit_file_and_image;
49 }
50 submission;
51
52 enum workshop_form_page{
53 k_workshop_form_hidden,
54 k_workshop_form_open, /* open but not looking at anything */
55 k_workshop_form_edit, /* editing a submission */
56 k_workshop_form_cclosing,
57 k_workshop_form_closing_good, /* post upload screen */
58 k_workshop_form_closing_bad,
59 }
60 page;
61
62 /* model viewer
63 * -----------------------------
64 */
65
66 char addon_folder[128];
67 struct player_board board_model;
68
69 /* what does the user want to do with the image preview? */
70 enum workshop_form_file_intent{
71 k_workshop_form_file_intent_none, /* loading probably */
72 k_workshop_form_file_intent_new, /* board_model is valid */
73 k_workshop_form_file_intent_keep_old /* just browsing */
74 }
75 file_intent;
76
77 world_instance *view_world;
78 ent_swspreview *ptr_ent;
79 v2f view_angles,
80 view_angles_begin;
81 v3f view_offset,
82 view_offset_begin;
83
84 float view_dist;
85 int view_changed;
86
87 /*
88 * published UGC request
89 * ------------------------------
90 */
91
92 struct {
93 UGCQueryHandle_t handle;
94 EResult result;
95
96 int all_item_count,
97 returned_item_count;
98 }
99 ugc_query;
100
101 /*
102 * UI information
103 * ------------------------------------------
104 */
105
106 const char *failure_or_success_string;
107 char error_msg[256];
108
109 int img_w, img_h;
110 u8 *img_buffer;
111
112 int view_published_page_count,
113 view_published_page_id;
114
115 struct published_file{
116 EResult result;
117 int result_index;
118 char title[80];
119 }
120 published_files_list[WORKSHOP_VIEW_PER_PAGE];
121 int published_files_list_length;
122 }
123 static workshop_form;
124
125
126
127 VG_STATIC int workshop_submit_command( int argc, const char *argv[] );
128 VG_STATIC void async_workshop_get_filepath( void *data, u32 len );
129 VG_STATIC void async_workshop_get_installed_files( void *data, u32 len );
130 VG_STATIC void workshop_load_metadata( const char *path,
131 struct workshop_file_info *info );
132
133 /* generic reciever */
134 VG_STATIC void workshop_async_any_complete( void *data, u32 size )
135 {
136 skaterift_end_op();
137 }
138
139 #endif /* WORKSHOP_H */