X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=ent_skateshop.c;h=47d8de29333b9a6b4971f4ad3574ef2f5e45f8a3;hb=d43d7f62ff83799b6d99221d881179814cb239a6;hp=fafd37634d2be72484f5049d292f2ad3245650a5;hpb=fee9867cee40c393a7142178039e8bcda964e004;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/ent_skateshop.c b/ent_skateshop.c index fafd376..47d8de2 100644 --- a/ent_skateshop.c +++ b/ent_skateshop.c @@ -182,29 +182,22 @@ VG_STATIC void workshop_visibile_load_loop(void) vg_str content_path = folder; - int found = 0; - vg_msg msg; - vg_msg_init( &msg, cache_ptr->reg_ptr->metadata, + vg_msg root; + vg_msg_init( &root, cache_ptr->reg_ptr->metadata, cache_ptr->reg_ptr->metadata_len ); - vg_msg_cmd cmd; - while( vg_msg_next( &msg, &cmd ) ){ - if( (msg.depth == 0) && (cmd.code == k_vg_msg_code_kvstring) ){ - if( VG_STRDJB2_EQ( "content", cmd.key, cmd.key_djb2 ) ){ - vg_strcat( &content_path, "/" ); - vg_strcat( &content_path, cmd.value._buf ); - found = 1; - break; - } - } - } - if( !vg_strgood( &content_path ) ) { - vg_error( "Metadata path too long\n" ); + const char *kv_content = vg_msg_seekkvstr( &root, "content", 0 ); + if( kv_content ){ + vg_strcat( &content_path, "/" ); + vg_strcat( &content_path, kv_content ); + } + else{ + vg_error( "No content paths in metadata\n" ); goto file_is_broken; } - if( !found ){ - vg_error( "No content paths in metadata\n" ); + if( !vg_strgood( &content_path ) ) { + vg_error( "Metadata path too long\n" ); goto file_is_broken; } @@ -225,7 +218,7 @@ file_is_broken:; VG_STATIC void world_scan_thread( void *_args ){ - addon_mount_local_folder( k_workshop_file_type_world, "maps", ".mdl" ); + addon_mount_content_folder( k_workshop_file_type_world, "maps", ".mdl" ); addon_mount_workshop_items(); vg_async_call( async_addon_reg_update, NULL, 0 ); skaterift_end_op(); @@ -240,7 +233,7 @@ VG_STATIC void skateshop_op_world_scan(void){ } VG_STATIC void board_scan_thread( void *_args ){ - addon_mount_local_folder( k_workshop_file_type_board, "boards", ".mdl" ); + addon_mount_content_folder( k_workshop_file_type_board, "boards", ".mdl" ); addon_mount_workshop_items(); vg_async_call( async_addon_reg_update, NULL, 0 ); vg_async_stall(); @@ -514,8 +507,10 @@ VG_STATIC void global_skateshop_preupdate(void) browseable = 1; } - if( skaterift.async_op == k_async_op_none ){ - gui_helper_action( button_display_string(k_srbind_maccept), "load" ); + if( (skaterift.async_op == k_async_op_none) && + global_skateshop.selected_world_id > 0 ){ + gui_helper_action( button_display_string(k_srbind_maccept), + "open rift" ); loadable = 1; } @@ -550,7 +545,7 @@ VG_STATIC void global_skateshop_preupdate(void) /* automatically load in clouds */ if( loadable && button_down( k_srbind_maccept ) ){ - vg_info( "Select world (%u)\n", + vg_info( "Select rift (%u)\n", global_skateshop.selected_world_id ); skaterift_change_world( reg->foldername ); return; @@ -691,6 +686,7 @@ fade_out:; } struct cache_board *cache_ptr = skateshop_selected_cache_if_loaded(); + if( !cache_ptr ){ global_skateshop.render.item_title = ""; global_skateshop.render.item_desc = ""; @@ -699,23 +695,13 @@ fade_out:; if( global_skateshop.render.reg_id != global_skateshop.selected_board_id ){ addon_reg *reg = cache_ptr->reg_ptr; - vg_msg msg; - vg_msg_init( &msg, reg->metadata, reg->metadata_len ); - - vg_msg_cmd cmd; - while( vg_msg_next( &msg, &cmd ) ){ - if( (msg.depth == 1) && (cmd.code == k_vg_msg_code_frame) ){ - if( VG_STRDJB2_EQ( "workshop", cmd.key, cmd.key_djb2 ) ){ - u32 depth = msg.depth; - while( (msg.depth == depth) && vg_msg_next( &msg, &cmd ) ){ - if( cmd.code == k_vg_msg_code_kvstring ){ - if( VG_STRDJB2_EQ( "title", cmd.key, cmd.key_djb2 ) ){ - global_skateshop.render.item_title = cmd.value._buf; - } - } - } - } - } + vg_msg root; + vg_msg_init( &root, reg->metadata, reg->metadata_len ); + + vg_msg workshop = root; + if( vg_msg_seekframe( &workshop, "workshop", 0 ) ){ + const char *title = vg_msg_seekkvstr( &workshop, "title", 0 ); + if( title ) global_skateshop.render.item_title = title; } global_skateshop.render.reg_id = global_skateshop.selected_board_id; @@ -745,7 +731,8 @@ fade_out:; mlocal[3][1] = 0.0f; mlocal[3][2] = 0.0f; m4x3_mul( mtext, mlocal, mmdl ); - font3d_simple_draw( &gui.font, 0, "JA", &main_camera, mmdl ); + font3d_simple_draw( &gui.font, 0, global_skateshop.render.item_desc, + &main_camera, mmdl ); } VG_STATIC void skateshop_render_charshop(void) @@ -762,6 +749,20 @@ VG_STATIC void skateshop_render_worldshop(void) *mark_info = mdl_arritm( &world->ent_marker, mdl_entity_id_id(shop->boards.id_info)); + if( global_skateshop.render.world_reg != global_skateshop.selected_world_id){ + addon_reg *reg = get_addon_from_index( k_workshop_file_type_world, + global_skateshop.selected_world_id ); + vg_msg root; + vg_msg_init( &root, reg->metadata, reg->metadata_len ); + vg_msg workshop = root; + if( vg_msg_seekframe( &workshop, "workshop", 0 ) ){ + global_skateshop.render.world_title = vg_msg_seekkvstr( &workshop, + "title", 0 ); + } + global_skateshop.render.world_loc = vg_msg_seekkvstr(&root,"location",0); + global_skateshop.render.world_reg = global_skateshop.selected_world_id; + } + /* Text */ char buftext[128], bufsubtext[128]; vg_str info, subtext; @@ -780,13 +781,13 @@ VG_STATIC void skateshop_render_worldshop(void) info.buffer[info.i++] = ' '; info.buffer[info.i] = '\0'; - vg_strcat( &info, "AFAWJFKAW" ); + vg_strcat( &info, global_skateshop.render.world_title ); if( skaterift.async_op == k_async_op_world_loading || skaterift.async_op == k_async_op_world_preloading ){ vg_strcat( &subtext, "Loading..." ); } else{ - vg_strcat( &subtext, "No information" ); + vg_strcat( &subtext, global_skateshop.render.world_loc ); } } else{