From: hgn Date: Sun, 23 Mar 2025 15:26:18 +0000 (+0000) Subject: incorporate board maker into world X-Git-Url: https://harrygodden.com/git/?a=commitdiff_plain;h=46335d281feaf3bf04641ddb640869520d629af7;p=carveJwlIkooP6JGAAIwe30JlM.git incorporate board maker into world --- diff --git a/content_skaterift/maps/mp_mtzero/before.mdl b/content_skaterift/maps/mp_mtzero/before.mdl index 861d534..e4568af 100644 Binary files a/content_skaterift/maps/mp_mtzero/before.mdl and b/content_skaterift/maps/mp_mtzero/before.mdl differ diff --git a/content_skaterift/maps/mp_mtzero/main.mdl b/content_skaterift/maps/mp_mtzero/main.mdl index 20e6aa9..c0f0ccf 100644 Binary files a/content_skaterift/maps/mp_mtzero/main.mdl and b/content_skaterift/maps/mp_mtzero/main.mdl differ diff --git a/src/scripts/generic.c b/src/scripts/generic.c index 4b35497..91ff462 100644 --- a/src/scripts/generic.c +++ b/src/scripts/generic.c @@ -1,3 +1,43 @@ +struct board_maker_unlock_waiter +{ + bool changed; + bool unlocked; +}; + +static bool _skaterift_script_board_maker_unlock( ent_script_event *event ) +{ + if( event->type == k_escript_event_allocate ) + { + struct script_event_allocate *event_info = event->info; + struct board_maker_unlock_waiter *waiter = vg_linear_alloc( event_info->heap, sizeof(struct board_maker_unlock_waiter) ); + waiter->changed = 0; + waiter->unlocked = 0; + event_info->userdata = waiter; + } + + u64 status; + if( on_nugget_changed( event, "board_maker_unlock", &status ) ) + { + struct board_maker_unlock_waiter *waiter = event->userdata; + waiter->changed = 1; + waiter->unlocked = status; + } + + if( event->type == k_escript_event_update || event->type == k_escript_event_world_start ) + { + if( _cutscene.state == k_cutscene_state_none ) + { + struct board_maker_unlock_waiter *waiter = event->userdata; + if( waiter->changed ) + { + ent_list_set_visible( event->world, event->entity_list, waiter->unlocked ); + waiter->changed = 0; + } + } + } + + return 1; +} static bool _skaterift_script_board_maker( ent_script_event *event ) { diff --git a/src/scripts/mtzero.c b/src/scripts/mtzero.c index 7cd46a4..cc468e1 100644 --- a/src/scripts/mtzero.c +++ b/src/scripts/mtzero.c @@ -324,7 +324,11 @@ static bool _skaterift_script_ch2e1( ent_script_event *event ) .freeze_player = 1, .subtitles = EN, }; - optional_video_wrapper( &cutscene, "ch2e1_view", 2, event ); + enum generic_cutscene_event cs_event = optional_video_wrapper( &cutscene, "ch2e1_view", 2, event ); + + if( cs_event == k_generic_cutscene_event_start ) + _skaterift_script_nugget_set( "board_maker_unlock", 1 ); + return 1; } diff --git a/src/scripts/tutorial_island.c b/src/scripts/tutorial_island.c index 7b4e0ec..87d2faf 100644 --- a/src/scripts/tutorial_island.c +++ b/src/scripts/tutorial_island.c @@ -191,23 +191,10 @@ static bool _skaterift_script_ch1s6a( ent_script_event *event ) _skaterift_script_nugget_set( "unlock_mtzero", 1 ); } - return 1; -} - -static bool _skaterift_script_final_portal( ent_script_event *event ) -{ - u64 status; - if( on_nugget_changed( event, "unlock_mtzero", &status ) ) + if( cs_event == k_generic_cutscene_event_end ) { - world_instance *world = event->world; - file_entity_ref *ref = af_arritm( &world->file_entity_ref, event->entity_list->entity_ref_start ); - - u32 type = mdl_entity_id_type( ref->entity_id ), - index = mdl_entity_id_id( ref->entity_id ); - - ent_gate *gate = af_arritm( &event->world->ent_gate, index ); - if( status ) gate->flags &= ~((u32)k_ent_gate_locked); - else gate->flags |= (u32)k_ent_gate_locked; + skaterift_load_world_command( 1, (const char *[]){ "sr002-local-dev_hub" } ); } + return 1; } diff --git a/src/skaterift_script.c b/src/skaterift_script.c index e9dc62d..5363931 100644 --- a/src/skaterift_script.c +++ b/src/skaterift_script.c @@ -706,6 +706,7 @@ enum generic_cutscene_event challenge_video_wrapper( const struct generic_cutsce struct ent_script_table_entry _ent_script_table[] = { + { "board_maker_unlock", _skaterift_script_board_maker_unlock }, { "board_maker", _skaterift_script_board_maker }, { "intro", _skaterift_script_intro }, @@ -718,7 +719,6 @@ struct ent_script_table_entry _ent_script_table[] = { "ch1s5", _skaterift_script_ch1s5 }, { "ch1s6a", _skaterift_script_ch1s6a }, { "unlock_docks", _skaterift_script_unlock_docks }, - { "final_portal", _skaterift_script_final_portal }, { "unlock_mtzero", _skaterift_script_unlock_mtzero }, { "ch2s1", _skaterift_script_ch2s1 }, @@ -754,8 +754,8 @@ struct script_save_nugget } _skaterift_script_savedata[] = { + { "board_maker_unlock" }, { "intro_view" }, - { "hub_info_view" }, { "ch1s2_view" }, diff --git a/src/world_load.c b/src/world_load.c index 2fd36da..5ba1246 100644 --- a/src/world_load.c +++ b/src/world_load.c @@ -534,12 +534,6 @@ void _world_loader_set_target_reg( addon_reg *reg ) /* console command for the above function */ int skaterift_load_world_command( int argc, const char *argv[] ) { - if( !vg_loader_availible() ) - { - vg_error( "Loading thread is currently unavailible\n" ); - return 0; - } - if( argc >= 1 ) { if( !strcmp( argv[0], "reload" ) )