#include "vg/vg_steam_remote_storage.h"
#include "skaterift.h"
#include "pointcloud.h"
+#include "vg/vg_steam_auth.h"
+#include "vg/vg_steam_ugc.h"
+#include "vg/vg_steam_friends.h"
+#include "steam.h"
+#include "ent_skateshop.h"
struct async_workshop_filepath_info{
PublishedFileId_t id;
const char *path;
};
+
+#define WORKSHOP_VIEW_PER_PAGE 15
+
+struct workshop_form{
+ struct {
+ char title[80];
+ char description[512];
+ char author[32];
+ struct ui_dropdown_value submission_type_selection;
+ enum workshop_file_type type;
+
+ PublishedFileId_t file_id; /* 0 if not published yet */
+
+ struct ui_dropdown_value 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;
+
+ /* what does the user want to do with the image preview? */
+ enum workshop_form_file_intent{
+ k_workshop_form_file_intent_none, /* loading probably */
+ k_workshop_form_file_intent_new, /* board_model is valid */
+ k_workshop_form_file_intent_keep_old /* just browsing */
+ }
+ file_intent;
+
+ world_instance *view_world;
+ ent_swspreview *ptr_ent;
+ v2f view_angles,
+ view_angles_begin;
+ v3f view_offset,
+ view_offset_begin;
+
+ float view_dist;
+ int view_changed;
+
+ /*
+ * published UGC request
+ * ------------------------------
+ */
+
+ struct {
+ UGCQueryHandle_t handle;
+ EResult result;
+
+ int all_item_count,
+ returned_item_count;
+ }
+ ugc_query;
+
+ /*
+ * UI information
+ * ------------------------------------------
+ */
+
+ const char *failure_or_success_string;
+ char error_msg[256];
+
+ int img_w, img_h;
+ u8 *img_buffer;
+
+ int view_published_page_count,
+ view_published_page_id;
+
+ struct published_file{
+ EResult result;
+ int result_index;
+ char title[80];
+ }
+ published_files_list[WORKSHOP_VIEW_PER_PAGE];
+ int published_files_list_length;
+}
+static workshop_form;
+
+
+
+VG_STATIC int workshop_submit_command( int argc, const char *argv[] );
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,