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;
}
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();
}
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();
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;
}
/* 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;
}
struct cache_board *cache_ptr = skateshop_selected_cache_if_loaded();
- if( !cache_ptr ) return;
+
+ if( !cache_ptr ){
+ global_skateshop.render.item_title = "";
+ global_skateshop.render.item_desc = "";
+ return;
+ }
+
+ if( global_skateshop.render.reg_id != global_skateshop.selected_board_id ){
+ addon_reg *reg = cache_ptr->reg_ptr;
+ 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;
+ }
addon_reg *reg = cache_ptr->reg_ptr;
* ----------------------------------------------------------------- */
m3x3_zero( mlocal );
m3x3_setdiagonalv3( mlocal, (v3f){ scale, scale, thickness } );
- mlocal[3][0] = -font3d_string_width( &gui.font, 0, "Flubber" );
+ mlocal[3][0] = -font3d_string_width( &gui.font, 0,
+ global_skateshop.render.item_title );
mlocal[3][0] *= scale*0.5f;
mlocal[3][1] = 0.1f;
mlocal[3][2] = 0.0f;
m4x3_mul( mtext, mlocal, mmdl );
- font3d_simple_draw( &gui.font, 0, "Flubber", &main_camera, mmdl );
+ font3d_simple_draw( &gui.font, 0, global_skateshop.render.item_title,
+ &main_camera, mmdl );
/* Author name
* ----------------------------------------------------------------- */
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)
*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;
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{