reg->flags = 0;
reg->metadata_len = 0;
reg->cache_id = 0;
- reg->state = k_addon_state_indexed;
reg->alias.workshop_id = workshop_id;
reg->alias.foldername[0] = '\0';
reg->alias.type = type;
const char *folder_name = vg_strch( &folder_path, '/' )+1;
u32 folder_hash = vg_strdjb2(folder_name);
- for( u32 i=0; i<addon_system.registry_count; i++ ){
+ for( u32 i=0; i<addon_system.registry_count; i++ )
+ {
addon_reg *reg = &addon_system.registry[i];
- if( (reg->alias.type == type) && (reg->foldername_hash == folder_hash) ){
- if( !strcmp( reg->alias.foldername, folder_name ) ){
- reg->state = k_addon_state_indexed;
+ if( (reg->alias.type == type) && (reg->foldername_hash == folder_hash) )
+ {
+ if( !strcmp( reg->alias.foldername, folder_name ) )
+ {
return reg;
}
}
addon_set_foldername( reg, folder_name );
addon_try_load_metadata( reg, folder_path );
- if( reg->metadata_len == 0 ){
+ if( reg->metadata_len == 0 )
+ {
/* create our own content commands */
vg_msg msg;
vg_msg_init( &msg, reg->metadata, sizeof(reg->metadata) );
for( u32 i=0; i<addon_system.registry_count; i++ ){
addon_reg *reg = &addon_system.registry[i];
- if( reg->alias.workshop_id == id ){
- reg->state = k_addon_state_indexed;
+ if( reg->alias.workshop_id == id )
goto next_file_workshop;
- }
}
vg_async_item *call1 =
u32 flags;
u16 cache_id;
-
- enum addon_state{
- k_addon_state_none,
- k_addon_state_indexed,
- k_addon_state_indexed_absent /* gone but not forgotten */
- }
- state;
}
*registry;
u32 registry_count;
savedata_file_read( &sav );
vg_msg kvsav;
- vg_msg_init( &kvsav, sav.buf, sizeof(sav.buf) );
+ vg_msg_init( &kvsav, sav.buf, sav.len );
u32 ach;
vg_msg_getkvintg( &kvsav, "ach", k_vg_msg_u32, &ach, NULL );
}
/* playermodel */
- if( skaterift_read_addon_alias( &kvsav, "playermodel",
- k_addon_type_player, &q ) )
+ if( skaterift_read_addon_alias( &kvsav, "playermodel", k_addon_type_player, &q ) )
{
reg_id = addon_match( &q );
if( reg_id != 0xffffffff )
kvsav.cur = orig;
if( vg_msg_seekframe( &kvsav, "story" ) )
+ {
skaterift_script_load_savedata( &kvsav );
+ }
+ else
+ {
+ vg_info( "Starting new story!\n" );
+ _world.switch_to_addon =
+ addon_mount_local_addon( "maps/dev_heaven", k_addon_type_world, ".mdl" );
+ _skaterift_script_hook( 2, (const char *[]){ "unlock", "intro" } );
+ }
}
skaterift.override_load_world = arg;
}
-static addon_reg *skaterift_mount_world_unloadable( const char *path, u32 ext ){
+static addon_reg *skaterift_mount_world_unloadable( const char *path, u32 ext )
+{
addon_reg *reg = addon_mount_local_addon( path, k_addon_type_world, ".mdl" );
if( !reg ) vg_fatal_error( "world not found\n" );
reg->flags |= (ADDON_REG_HIDDEN | ext);
void _skaterift_script_marker( const char *marker );
void skaterift_script_write_savedata( vg_msg *sav );
void skaterift_script_load_savedata( vg_msg *sav );
+static int _skaterift_script_hook( int argc, const char *argv[] );