* Check all subscribed items
*/
static void addon_mount_workshop_items(void){
+ if( skaterift.demo_mode ){
+ vg_info( "Won't load workshop items in demo mode\n" );
+ return;
+ }
if( !steam_ready ) return;
+
/*
* Steam workshop scan
*/
char foldername[ ADDON_FOLDERNAME_MAX ];
};
-#define ADDON_REG_HIDDEN 0x1
-#define ADDON_REG_MTZERO 0x2
-#define ADDON_REG_CITY 0x4
+#define ADDON_REG_HIDDEN 0x1
+#define ADDON_REG_MTZERO 0x2
+#define ADDON_REG_CITY 0x4
+#define ADDON_REG_PREMIUM 0x8
struct {
struct addon_reg{
}
if( button_down( k_srbind_miniworld_resume ) ){
+ if( skaterift.demo_mode ){
+ if( world_static.instance_addons[1]->flags & ADDON_REG_PREMIUM ){
+ /* TODO: open menu page with link to buy */
+ return;
+ }
+ }
+
global_miniworld.transition = 1;
global_miniworld.t = 0.0f;
global_miniworld.cam = skaterift.cam;
if( vg_long_opt( "tools" ) ){
k_tools_mode = 1;
}
+
+ if( vg_long_opt( "demo" ) ){
+ skaterift.demo_mode = 1;
+ }
}
static void vg_preload(void){
/* hub world */
addon_reg *hub = skaterift_mount_world_unloadable( "maps/dev_hub", 0 );
- skaterift_mount_world_unloadable( "maps/mp_spawn", ADDON_REG_CITY );
- skaterift_mount_world_unloadable( "maps/mp_mtzero", ADDON_REG_MTZERO );
+ skaterift_mount_world_unloadable( "maps/mp_spawn",
+ ADDON_REG_CITY|ADDON_REG_PREMIUM );
+ skaterift_mount_world_unloadable( "maps/mp_mtzero",
+ ADDON_REG_MTZERO|ADDON_REG_PREMIUM );
skaterift_mount_world_unloadable( "maps/dev_tutorial", 0 );
/* load home/permanent world manually */
GLuint rt_textures[k_skaterift_rt_max];
u32 achievements;
+ int demo_mode;
}
static skaterift = { .op = k_async_op_clientloading, .time_rate = 1.0f };
return;
}
+ if( skaterift.demo_mode ){
+ if( world_static.instance_addons[index]->flags & ADDON_REG_PREMIUM ){
+ vg_error( "Can't switch to a premium world in the demo version\n" );
+ return;
+ }
+ }
+
world_instance *current =
&world_static.instances[ world_static.active_instance ];
v3_copy( new->player_co, localplayer.rb.co );
world_static.active_instance = index;
-
player__reset();
}
ent_gate *gate = mdl_arritm( &world->ent_gate, j );
gate_transform_update( gate );
+ if( skaterift.demo_mode )
+ if( world_static.instance_addons[world_id]->flags & ADDON_REG_PREMIUM )
+ continue;
+
if( !(gate->flags & k_ent_gate_nonlocal) ) continue;
if( gate->flags & k_ent_gate_linked ) continue;