X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=workshop.c;h=10c482942b4f809683824b34e768267c516ca816;hb=HEAD;hp=4d8856bed8a2410b89a6e300897d436f163120ac;hpb=6b036c10d38e7d691eb0bc06c29235b450c3ff10;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/workshop.c b/workshop.c index 4d8856b..10c4829 100644 --- a/workshop.c +++ b/workshop.c @@ -1,20 +1,19 @@ -#ifndef WORKSHOP_C -#define WORKSHOP_C -#include "workshop.h" - -#define VG_GAME -#include "vg/vg.h" +#include "vg/vg_engine.h" #include "vg/vg_tex.h" +#include "vg/vg_image.h" #include "vg/vg_msg.h" #include "vg/vg_binstr.h" +#include "vg/vg_loader.h" #include "ent_skateshop.h" #include "vg/vg_steam_auth.h" #include "vg/vg_steam_ugc.h" #include "vg/vg_steam_friends.h" #include "steam.h" -#include "highscores.h" +#include "workshop.h" + +struct workshop_form workshop_form; static struct ui_enum_opt workshop_form_visibility_opts[] = { { k_ERemoteStoragePublishedFileVisibilityPublic, "Public" }, @@ -323,7 +322,8 @@ static void _workshop_form_submit_thread( void *data ) vg_msg_frame( &descriptor, "workshop" ); vg_msg_wkvstr( &descriptor, "title", workshop_form.submission.title ); //vg_msg_wkvstr( &descriptor, "author", "unknown" ); - vg_msg_wkvu32( &descriptor, "type", workshop_form.submission.type ); + vg_msg_wkvnum( &descriptor, "type", k_vg_msg_u32, 1, + &workshop_form.submission.type ); vg_msg_wkvstr( &descriptor, "folder", workshop_form.addon_folder ); vg_msg_end_frame( &descriptor ); //vg_msg_wkvstr( &descriptor, "location", "USA" ); @@ -673,27 +673,32 @@ static void workshop_op_download_and_view_submission( int result_index ) workshop_form.submission.type = k_addon_type_none; workshop_form.submission.submission_type_selection = k_addon_type_none; - if( have_meta ){ + if( have_meta ) + { u32 len = strlen(metadata_str); vg_info( "Metadata: %s\n", metadata_str ); vg_str_bin( metadata_str, metadata_buf, len ); vg_msg msg; vg_msg_init( &msg, metadata_buf, len/2 ); - if( vg_msg_seekframe( &msg, "workshop" )){ - u32 type = vg_msg_getkvu32( &msg, "type", 0 ); + if( vg_msg_seekframe( &msg, "workshop" )) + { + u32 type; + vg_msg_getkvintg( &msg, "type", k_vg_msg_u32, &type, NULL ); workshop_form.submission.type = type; workshop_form.submission.submission_type_selection = type; const char *kv_folder = vg_msg_getkvstr( &msg, "folder" ); - if( kv_folder ){ + if( kv_folder ) + { vg_strncpy( kv_folder, workshop_form.addon_folder, sizeof(workshop_form.addon_folder), k_strncpy_always_add_null ); } } } - else{ + else + { vg_error( "No metadata was returned with this item.\n" ); } @@ -808,7 +813,7 @@ static void on_workshop_UGCQueryComplete( void *data, void *userdata ) /* * Console command to open the workshop publisher */ -static int workshop_submit_command( int argc, const char *argv[] ) +int workshop_submit_command( int argc, const char *argv[] ) { if( !steam_ready ){ ui_start_modal( "Steam API is not initialized\n", UI_MODAL_BAD ); @@ -844,7 +849,7 @@ static int workshop_submit_command( int argc, const char *argv[] ) return 0; } -static void workshop_init(void) +void workshop_init(void) { vg_console_reg_cmd( "workshop_submit", workshop_submit_command, NULL ); } @@ -857,7 +862,7 @@ static void workshop_render_world_preview(void){ glEnable( GL_DEPTH_TEST ); glDisable( GL_BLEND ); - render_world( localplayer.viewable_world, &skaterift.cam, 1 ); + render_world( world_current_instance(), &skaterift.cam, 0, 0, 1, 1 ); glBindFramebuffer( GL_FRAMEBUFFER, 0 ); glViewport( 0,0, vg.window_x, vg.window_y ); @@ -873,7 +878,7 @@ static void workshop_render_player_preview(void){ glEnable( GL_DEPTH_TEST ); glDisable( GL_BLEND ); - struct skeleton *sk = &localplayer.playeravatar->sk; + struct skeleton *sk = &localplayer.skeleton; player_pose res; res.type = k_player_pose_type_ik; @@ -897,7 +902,7 @@ static void workshop_render_player_preview(void){ skeleton_apply_inverses( sk, localplayer.final_mtx ); skeleton_apply_transform( sk, transform, localplayer.final_mtx ); - camera cam; + vg_camera cam; v3_copy( (v3f){ 0.0f, 201.7f, 1.2f }, cam.pos ); cam.nearz = 0.01f; @@ -905,14 +910,13 @@ static void workshop_render_player_preview(void){ cam.fov = 57.0f; v3_zero( cam.angles ); - camera_update_transform( &cam ); - camera_update_view( &cam ); - camera_update_projection( &cam ); - camera_finalize( &cam ); + vg_camera_update_transform( &cam ); + vg_camera_update_view( &cam ); + vg_camera_update_projection( &cam ); + vg_camera_finalize( &cam ); - world_instance *world = localplayer.viewable_world; - render_playermodel( &cam, world, 0, &workshop_form.player_model, sk, - localplayer.final_mtx ); + render_playermodel( &cam, world_current_instance(), 0, + &workshop_form.player_model, sk, localplayer.final_mtx ); glBindFramebuffer( GL_FRAMEBUFFER, 0 ); glViewport( 0,0, vg.window_x, vg.window_y ); @@ -947,13 +951,13 @@ static void workshop_render_board_preview(void){ v3_add( display->transform.co, display1->transform.co, baseco ); v3_muls( baseco, 0.5f, baseco ); - camera cam; + vg_camera cam; v3f basevector; v3_sub( display->transform.co, ref->transform.co, basevector ); float dist = v3_length( basevector ); v3f baseangles; - player_vector_angles( baseangles, basevector, 1.0f, 0.0f ); + v3_angles( basevector, baseangles ); v2_add( workshop_form.view_angles, baseangles, cam.angles ); cam.angles[2] = 0.0f; @@ -978,10 +982,10 @@ static void workshop_render_board_preview(void){ cam.farz = 100.0f; cam.fov = ref->fov; - camera_update_transform( &cam ); - camera_update_view( &cam ); - camera_update_projection( &cam ); - camera_finalize( &cam ); + vg_camera_update_transform( &cam ); + vg_camera_update_view( &cam ); + vg_camera_update_projection( &cam ); + vg_camera_finalize( &cam ); m4x3f mmdl, mmdl1; mdl_transform_m4x3( &display->transform, mmdl ); @@ -1001,7 +1005,7 @@ static void workshop_render_board_preview(void){ glBufferSubData( GL_UNIFORM_BUFFER, 0, sizeof(struct ub_world_lighting), &world->ub_lighting ); - render_world( world, &cam, 1 ); + render_world( world, &cam, 0, 0, 0, 0 ); struct player_board_pose pose = {0}; render_board( &cam, world, board, mmdl, &pose, k_board_shader_entity ); render_board( &cam, world, board, mmdl1, &pose, k_board_shader_entity ); @@ -1328,12 +1332,12 @@ static void workshop_form_gui_sidebar( ui_rect sidebar ) ui_fill( controls, ui_colour( k_ui_bg+1 ) ); char buf[32]; - strcpy( buf, "page " ); - int i = 5; - i += highscore_intl( buf+i, workshop_form.view_published_page_id+1, 4 ); - buf[ i ++ ] = '/'; - i += highscore_intl( buf+i, workshop_form.view_published_page_count, 4 ); - buf[ i ++ ] = '\0'; + vg_str str; + vg_strnull( &str, buf, sizeof(buf) ); + vg_strcat( &str, "page " ); + vg_strcati32( &str, workshop_form.view_published_page_id+1 ); + vg_strcatch( &str, '/' ); + vg_strcati32( &str, workshop_form.view_published_page_count ); ui_rect_pad( controls, (ui_px[2]){0,4} ); ui_rect info; @@ -1377,7 +1381,7 @@ static void workshop_form_gui_sidebar( ui_rect sidebar ) } } -static void workshop_form_gui(void) +void workshop_form_gui(void) { enum workshop_form_page stable_page = workshop_form.page; if( stable_page == k_workshop_form_hidden ) return; @@ -1505,7 +1509,7 @@ static void workshop_form_gui(void) * ----------------------------------------------------------------------------- */ -static void async_workshop_get_filepath( void *data, u32 len ) +void async_workshop_get_filepath( void *data, u32 len ) { struct async_workshop_filepath_info *info = data; @@ -1521,7 +1525,7 @@ static void async_workshop_get_filepath( void *data, u32 len ) } } -static void async_workshop_get_installed_files( void *data, u32 len ) +void async_workshop_get_installed_files( void *data, u32 len ) { struct async_workshop_installed_files_info *info = data; @@ -1541,5 +1545,3 @@ static void async_workshop_get_installed_files( void *data, u32 len ) *info->len = j; } - -#endif /* WORKSHOP_C */