From 508c10a195bf12d5d4b8e737f7b27fda0c9242db Mon Sep 17 00:00:00 2001 From: hgn Date: Mon, 10 Feb 2025 17:51:50 +0000 Subject: [PATCH] mark only certain scripts as story events --- content_skaterift/maps/dev_heaven/main.mdl | Bin 890960 -> 897520 bytes content_skaterift/models/rs_icons.mdl | Bin 74184 -> 95184 bytes src/entity.h | 6 +- src/gui.h | 10 +- src/skaterift_script.c | 138 ++++++++++++--------- src/skaterift_script.h | 24 ++++ src/world.h | 8 ++ src/world_entity.c | 38 ++++-- src/world_load.c | 6 +- src/world_map.c | 20 ++- 10 files changed, 172 insertions(+), 78 deletions(-) diff --git a/content_skaterift/maps/dev_heaven/main.mdl b/content_skaterift/maps/dev_heaven/main.mdl index 30f138cd5e87b958bc1906e6b61fea8a299d0188..6aadd05397506cb594eb2261b3ac9e26b02bc616 100644 GIT binary patch delta 7331 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 Pw3z48yO&pQdAk1x*~kXE diff --git a/content_skaterift/models/rs_icons.mdl b/content_skaterift/models/rs_icons.mdl index 4d303ddbfd273c5e2ceac60387fff8848ee7450f..ecbe3bcc79c43f306392654c04a0ec1da3fbf7bb 100644 GIT binary patch delta 21123 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 delta 543 zcmYk2KS%;m9LImpPRTz-lUiuhW?&FRAYG7BOVr?4P}rqcU7n|$CtM)pA~Y&Lnp)fv zC&QrDs39oIww8#dXlQD23HrUfgMQri`+kql`@Y}fx*yKF8zFH3028EPQi!Bz8QG-O zt|kLWlIVk?p)1;6(MHg70F2ZV0q2#AH(P-t)7?KAq%*mUn#xIrtSgerBQ=YSSj>=3 zqom6mL4z2t7>Va3ost%`S;1mEd95F!J!kx7QIf0~tEse%4d|*~S+|?;-=bA$O(LbO31c-Y91nU(293^cHPx={b6XW9xQaa0%cC{yQoQ?V7 z(rH;MsVcNutxlXRGi*C%m=E6_B8y;nKx7NJLB573alias ); + if( info->flags & SCRIPT_FLAG_STORY_EVENT ) { - vg_msg_wkvnum( sav, "viewed_time", - k_vg_msg_u64, 1, &info->viewed_time ); + vg_msg_frame( sav, info->alias ); + { + vg_msg_wkvnum( sav, "viewed_time", + k_vg_msg_u64, 1, &info->viewed_time ); - u8 availible = info->availible; - vg_msg_wkvnum( sav, "availible", k_vg_msg_u8, 1, &availible ); + u8 availible = info->availible; + vg_msg_wkvnum( sav, "availible", k_vg_msg_u8, 1, &availible ); + } + vg_msg_end_frame( sav ); } - vg_msg_end_frame( sav ); } } @@ -1846,14 +1847,17 @@ void skaterift_script_load_savedata( vg_msg *sav ) sav->cur = orig; struct script_info *info = &_script_infos[i]; - if( vg_msg_seekframe( sav, info->alias ) ) + if( info->flags & SCRIPT_FLAG_STORY_EVENT ) { - vg_msg_getkvintg( sav, "viewed_time", k_vg_msg_u64, - &info->viewed_time, NULL ); + if( vg_msg_seekframe( sav, info->alias ) ) + { + vg_msg_getkvintg( sav, "viewed_time", k_vg_msg_u64, + &info->viewed_time, NULL ); - u8 availible; - vg_msg_getkvintg( sav, "availible", k_vg_msg_u8, &availible, NULL ); - info->availible = availible? 1: 0; + u8 availible; + vg_msg_getkvintg( sav, "availible", k_vg_msg_u8, &availible, NULL ); + info->availible = availible? 1: 0; + } } } } @@ -1873,12 +1877,20 @@ static void _skaterift_script_hook_apply_action( u32 script_id, struct script_info *info = &_script_infos[ script_id ]; if( action == k_script_action_unlock ) + { info->availible = 1; + if( info->linked_challenge ) + info->linked_challenge->flags &= ~((u32)k_ent_challenge_locked); + } + if( action == k_script_action_reset ) { info->availible = 0; info->viewed_time = 0; + + if( info->linked_challenge ) + info->linked_challenge->flags |= (u32)k_ent_challenge_locked; } if( action == k_script_action_play ) @@ -1940,17 +1952,17 @@ static int _skaterift_script_hook( int argc, const char *argv[] ) } else { - for( u32 i=0; ient_challenge); i++ ){ + for( u32 i=0; ient_challenge); i++ ) + { ent_challenge *challenge = af_arritm( &world->ent_challenge, i ); const char *alias = af_str( &world->meta.af, challenge->pstr_alias ); - u32 result; - vg_msg_getkvintg( sav, alias, k_vg_msg_u32, &result, NULL ); + if( challenge->flags & k_ent_challenge_is_story ) + { + struct script_info *script = skaterift_script_get_info( alias ); + world->events[i].story_script = script; - if( result ){ - ent_call call; - call.data = NULL; - call.function = 0; - call.id = mdl_entity_id( k_ent_challenge, i ); - entity_call( world, &call ); + if( script ) + { + script->linked_challenge = challenge; + + if( !script->availible ) + { + challenge->flags |= k_ent_challenge_locked; + } + } + } + else + { + u32 result; + vg_msg_getkvintg( sav, alias, k_vg_msg_u32, &result, NULL ); + + if( result ) + { + ent_call call; + call.data = NULL; + call.function = 0; + call.id = mdl_entity_id( k_ent_challenge, i ); + entity_call( world, &call ); + } } } diff --git a/src/world_load.c b/src/world_load.c index 66fed1c..9abcd14 100644 --- a/src/world_load.c +++ b/src/world_load.c @@ -103,6 +103,9 @@ static void world_instance_load_mdl( world_instance *world, const char *path, world->info.flags = 0; } + world->events = vg_linear_alloc( heap, + af_arrcount(&world->ent_challenge)*sizeof(struct event_info) ); + vg_loader_set_user_information( "Compiling world details" ); time_t seconds = time(NULL) % ((u32)vg_maxf(1.0f,k_day_length)*60); @@ -368,7 +371,8 @@ void world_switcher_update(void) if( !all_world_audio_stopped ) return; - + + _skaterift_script_unlink_all_challenges(); world_instance_free_graphics_data( &_world.main ); _world.loader_state = k_world_loader_ready; vg_loader_set_user_information( "Waiting for loading thread" ); diff --git a/src/world_map.c b/src/world_map.c index 4dbacfd..9752533 100644 --- a/src/world_map.c +++ b/src/world_map.c @@ -229,10 +229,26 @@ void world_map_pre_update(void) for( u32 i=0; ient_challenge); i++ ) { ent_challenge *challenge = af_arritm( &world->ent_challenge, i ); + if( challenge->flags & k_ent_challenge_locked ) + continue; enum gui_icon icon = k_gui_icon_exclaim_2d; - if( challenge->status ) - icon = k_gui_icon_tick_2d; + if( challenge->flags & k_ent_challenge_is_story ) + { + icon = k_gui_icon_story2d; + if( world->events[i].story_script ) + { + if( world->events[i].story_script->viewed_time ) + { + icon = k_gui_icon_story_done2d; + } + } + } + else + { + if( challenge->status ) + icon = k_gui_icon_tick_2d; + } respawn_map_draw_icon( cam, icon, challenge->transform.co, 1.0f ); } -- 2.25.1