-VG_STATIC void async_workshop_get_filepath( void *data, u32 len );
-VG_STATIC void async_workshop_get_installed_files( void *data, u32 len );
-VG_STATIC void workshop_load_metadata( const char *path,
- struct workshop_file_info *info );
+#define WORKSHOP_VIEW_PER_PAGE 15
+
+struct workshop_form{
+ enum workshop_op {
+ k_workshop_op_none,
+ k_workshop_op_downloading_submission,
+ k_workshop_op_publishing_update,
+ k_workshop_op_loading_model
+ }
+ op;
+
+ struct {
+ char title[80];
+ char description[512];
+ char author[32];
+ i32 submission_type_selection;
+ enum addon_type type;
+
+ PublishedFileId_t file_id; /* 0 if not published yet */
+
+ i32 visibility;
+ int submit_title, /* set if the respective controls are touched */
+ submit_description,
+ submit_file_and_image;
+ }
+ submission;
+
+ enum workshop_form_page{
+ k_workshop_form_hidden,
+ k_workshop_form_open, /* open but not looking at anything */
+ k_workshop_form_edit, /* editing a submission */
+ k_workshop_form_cclosing,
+ k_workshop_form_closing_good, /* post upload screen */
+ k_workshop_form_closing_bad,
+ }
+ page;
+
+ /* model viewer
+ * -----------------------------
+ */
+
+ char addon_folder[128];
+ struct player_board board_model;
+ struct player_model player_model;