+ shader_model_font_uColour( (v4f){1.0f,1.0f,1.0f,1.0f} );
+
+ /* Selection counter
+ * ------------------------------------------------------------------ */
+ m3x3_zero( mlocal );
+ v3_zero( mlocal[3] );
+ mlocal[0][0] = -scale*2.0f;
+ mlocal[1][2] = -scale*2.0f;
+ mlocal[2][1] = -thickness;
+ mlocal[3][2] = -0.7f;
+ m4x3_mul( mrack, mlocal, mmdl );
+
+ if( global_skateshop.registry_count == 0 ){
+ font3d_simple_draw( &world_global.font, 0,
+ "Nothing installed", &main_camera, mmdl );
+ }
+ else{
+ char buf[16];
+ int i=0;
+ i+=highscore_intl( buf+i, global_skateshop.selected_registry_id+1, 3 );
+ buf[i++] = '/';
+ i+=highscore_intl( buf+i, global_skateshop.registry_count, 3 );
+ buf[i++] = '\0';
+
+ font3d_simple_draw( &world_global.font, 0, buf, &main_camera, mmdl );
+ }
+
+ struct cache_board *cache_ptr = skateshop_selected_cache_if_loaded();
+ if( !cache_ptr ) return;
+
+ struct registry_board *reg =
+ &global_skateshop.registry[cache_ptr->registry_id];
+ struct workshop_file_info *info = ®->workshop;
+
+ /* Skin title
+ * ----------------------------------------------------------------- */
+ m3x3_zero( mlocal );
+ m3x3_setdiagonalv3( mlocal, (v3f){ scale, scale, thickness } );
+ mlocal[3][0] = -font3d_string_width( &world_global.font, 0, info->title );
+ mlocal[3][0] *= scale*0.5f;
+ mlocal[3][1] = 0.1f;
+ m4x3_mul( mtext, mlocal, mmdl );
+ font3d_simple_draw( &world_global.font, 0, info->title, &main_camera, mmdl );
+
+ /* Author name
+ * ----------------------------------------------------------------- */
+ scale *= 0.4f;
+ m3x3_setdiagonalv3( mlocal, (v3f){ scale, scale, thickness } );
+ mlocal[3][0] = -font3d_string_width( &world_global.font, 0,
+ info->author_name );
+ mlocal[3][0] *= scale*0.5f;
+ mlocal[3][1] = 0.0f;
+ m4x3_mul( mtext, mlocal, mmdl );
+ font3d_simple_draw( &world_global.font, 0,
+ info->author_name, &main_camera, mmdl );
+}
+
+VG_STATIC void skateshop_render_charshop(void)
+{
+}
+
+/*
+ * World: render event
+ */
+VG_STATIC void skateshop_render(void)
+{
+ if( !global_skateshop.active ) return;
+
+ ent_skateshop *shop = global_skateshop.ptr_ent;
+
+ if( shop->type == k_skateshop_type_boardshop ){
+ skateshop_render_boardshop();
+ }
+ else if( shop->type == k_skateshop_type_charshop ){
+ skateshop_render_charshop();
+ }
+ else{
+ vg_fatal_error( "Unknown store (%u)\n", shop->type );
+ }
+}
+
+/*
+ * Entity logic: entrance event
+ */
+VG_STATIC void ent_skateshop_call( world_instance *world, ent_call *call )
+{
+ u32 index = mdl_entity_id_id( call->id );
+ ent_skateshop *shop = mdl_arritm( &world->ent_skateshop, index );
+ vg_info( "skateshop_call\n" );
+
+ if( menu.active ) return;