From: hgn Date: Mon, 26 May 2025 00:26:04 +0000 (+0100) Subject: STARTING TO TAKE THE PISS A BIT HERE X-Git-Url: https://harrygodden.com/git/?a=commitdiff_plain;h=1fc1ea096364eee66ba5fd878e8c013c20038d9a;p=carveJwlIkooP6JGAAIwe30JlM.git STARTING TO TAKE THE PISS A BIT HERE --- diff --git a/content_skaterift/maps/dev_hub/main.mdl b/content_skaterift/maps/dev_hub/main.mdl index 72946d4..ac093da 100644 Binary files a/content_skaterift/maps/dev_hub/main.mdl and b/content_skaterift/maps/dev_hub/main.mdl differ diff --git a/content_skaterift/maps/mp_line1/main.mdl b/content_skaterift/maps/mp_line1/main.mdl index 76975d9..f5e0d8e 100644 Binary files a/content_skaterift/maps/mp_line1/main.mdl and b/content_skaterift/maps/mp_line1/main.mdl differ diff --git a/content_skaterift/metascenes/ch4rk.ms b/content_skaterift/metascenes/ch4rk.ms new file mode 100644 index 0000000..a09628b Binary files /dev/null and b/content_skaterift/metascenes/ch4rk.ms differ diff --git a/content_skaterift/metascenes/ch4s1.ms b/content_skaterift/metascenes/ch4s1.ms new file mode 100644 index 0000000..fbe1181 Binary files /dev/null and b/content_skaterift/metascenes/ch4s1.ms differ diff --git a/content_skaterift/metascenes/ch4s1a.ms b/content_skaterift/metascenes/ch4s1a.ms new file mode 100644 index 0000000..6535ee8 Binary files /dev/null and b/content_skaterift/metascenes/ch4s1a.ms differ diff --git a/content_skaterift/metascenes/ch4s2.ms b/content_skaterift/metascenes/ch4s2.ms new file mode 100644 index 0000000..ebde86e Binary files /dev/null and b/content_skaterift/metascenes/ch4s2.ms differ diff --git a/src/ent_challenge.c b/src/ent_challenge.c index 8dbaa99..cc4599f 100644 --- a/src/ent_challenge.c +++ b/src/ent_challenge.c @@ -130,6 +130,8 @@ void _restart_active_challenge(void) v3_copy( localplayer.rb.co, localplayer.cam_control.tpv_lpf ); } } + + _world_raise_event( _world.active_challenge_id, "activate" ); } void ent_challenge_update(void) @@ -159,7 +161,6 @@ void ent_challenge_update(void) localplayer.immobile = 0; /* TODO: Unify this probably after eating some potats */ menu.disable_open = 0; - _world_raise_event( _world.active_challenge_id, "activate" ); _restart_active_challenge(); } else if( button_down( k_srbind_mback ) ) diff --git a/src/ent_list.c b/src/ent_list.c index 6e2ca24..8301bf7 100644 --- a/src/ent_list.c +++ b/src/ent_list.c @@ -90,6 +90,12 @@ void _ent_list_set_visible( ent_list *list, bool visible ) if( visible ) glider->flags &= ~((u32)0x1); else glider->flags |= 0x1; } + else if( iter.type == k_ent_spawn ) + { + ent_spawn *spawn = af_arritm( &world->ent_spawn, iter.index ); + if( visible ) spawn->flags &= ~((u32)k_ent_spawn_flag_locked); + else spawn->flags |= (u32)k_ent_spawn_flag_locked; + } } } diff --git a/src/ent_npc.c b/src/ent_npc.c index 269890f..1b71ab2 100644 --- a/src/ent_npc.c +++ b/src/ent_npc.c @@ -238,8 +238,9 @@ void _ent_npc_reset(void) for( u32 i=0; i<4; i++ ) { struct human_npc *human = &_npc.humans[i]; - human->alive = 0; addon_cache_unwatch( k_addon_type_player, human->playermodel_view_slot ); + human->playermodel_view_slot = 0; + human->alive = 0; } } @@ -543,7 +544,7 @@ entity_event_result ent_npc_event( ent_event *event ) const char *addons[] = { [k_npc_jc] = "sr003-local-skaterift_john", - [k_npc_mike] = "sr003-local-skaterift_mike", + [k_npc_mike] = "sr003-local-skaterift_chip", [k_npc_fbi] = "sr003-local-skaterift_fbi", }; human->alive = 1; diff --git a/src/steam.c b/src/steam.c index 6eb2d05..22ce6bc 100644 --- a/src/steam.c +++ b/src/steam.c @@ -51,7 +51,6 @@ void steam_store_achievements(void) } } -void update_ach_models(void); void steam_set_achievement( const char *name ) { if( skaterift.demo_mode ) @@ -62,7 +61,6 @@ void steam_set_achievement( const char *name ) if( !strcmp(name,"ALBERT") ) skaterift.achievements |= 0x2; if( !strcmp(name,"JANET") ) skaterift.achievements |= 0x4; if( !strcmp(name,"BERNADETTA") ) skaterift.achievements |= 0x8; - update_ach_models(); if( steam_ready && steam_stats_ready ){ if( SteamAPI_ISteamUserStats_SetAchievement( hSteamUserStats, name ) ){ @@ -154,39 +152,37 @@ int steam_achievement_ccmd( int argc, char const *argv[] ) static void steam_on_recieve_current_stats( CallbackMsg_t *msg ) { UserStatsReceived_t *rec = (UserStatsReceived_t *)msg->m_pubParam; - - if( rec->m_eResult == k_EResultOK ){ - vg_info( "Recieved stats for: %lu (user: %lu)\n", rec->m_nGameID, - rec->m_steamIDUser ); + if( rec->m_eResult == k_EResultOK ) + { + vg_info( "Recieved stats for: %lu (user: %lu)\n", rec->m_nGameID, rec->m_steamIDUser ); steam_stats_ready = 1; steamapi_bool set = 0; - if( SteamAPI_ISteamUserStats_GetAchievement( - hSteamUserStats, "MARC", &set ) ){ + if( SteamAPI_ISteamUserStats_GetAchievement( hSteamUserStats, "MARC", &set ) ) + { if( set ) skaterift.achievements |= 0x1; } - if( SteamAPI_ISteamUserStats_GetAchievement( - hSteamUserStats, "ALBERT", &set ) ){ + if( SteamAPI_ISteamUserStats_GetAchievement( hSteamUserStats, "ALBERT", &set ) ) + { if( set ) skaterift.achievements |= 0x2; } - if( SteamAPI_ISteamUserStats_GetAchievement( - hSteamUserStats, "JANET", &set ) ){ + if( SteamAPI_ISteamUserStats_GetAchievement( hSteamUserStats, "JANET", &set ) ) + { if( set ) skaterift.achievements |= 0x4; } - if( SteamAPI_ISteamUserStats_GetAchievement( - hSteamUserStats, "BERNADETTA", &set ) ){ + if( SteamAPI_ISteamUserStats_GetAchievement( hSteamUserStats, "BERNADETTA", &set ) ) + { if( set ) skaterift.achievements |= 0x8; } - update_ach_models(); } - else{ + else vg_error( "Error recieveing stats for user (%u)\n", rec->m_eResult ); - } } static u32 utf8_byte0_byte_count( u8 char0 ) { - for( u32 k=2; k<4; k++ ){ + for( u32 k=2; k<4; k++ ) + { if( !(char0 & (0x80 >> k)) ) return k; } @@ -199,39 +195,38 @@ u32 str_utf8_collapse( const char *str, char *buf, u32 length ) u8 *ustr = (u8 *)str; u32 utf32_code = 0x00000000; u32 i=0, j=0, utf32_byte_ct=0; - - for(;j < length-1;){ + for(;j < length-1;) + { if( ustr[i] == 0x00 ) break; - - if( ustr[i] & 0x80 ){ - if( utf32_byte_ct ){ + if( ustr[i] & 0x80 ) + { + if( utf32_byte_ct ) + { utf32_byte_ct --; utf32_code |= (ustr[i] & 0x3F) << (utf32_byte_ct*6); - - if( !utf32_byte_ct ){ + if( !utf32_byte_ct ) + { const char *match; size_t chars = anyascii( utf32_code, &match ); - - for( u32 k=0; k> utf32_byte_ct); utf32_code <<= utf32_byte_ct*6; } } - else{ + else + { utf32_byte_ct = 0x00; buf[j ++] = str[i]; } - i++; } - buf[j] = 0x00; return j; } diff --git a/src/world.c b/src/world.c index c94fd56..e5d5de7 100644 --- a/src/world.c +++ b/src/world.c @@ -38,6 +38,7 @@ void skaterift_world_get_save_path( addon_id addon_id, char buf[128] ) void world_update( world_instance *world, v3f pos ) { + _ent_update(); ent_script_update( world ); ent_route_preupdate(); _ent_npc_preupdate(); diff --git a/src/world_entity.c b/src/world_entity.c index a37a6c6..ae485aa 100644 --- a/src/world_entity.c +++ b/src/world_entity.c @@ -29,6 +29,18 @@ bh_system bh_system_entity_list = .cast_ray = NULL }; +struct +{ + struct ent_event_deferred + { + f32 timeleft; + u32 event_index; + } + timed_events[32]; + u32 timed_event_count; +} +_event_system; + static void _event_trigger( ent_event *event ); void world_gen_entities_init( world_instance *world ) @@ -556,14 +568,6 @@ void entity_bh_debug( void *user, u32 item_index ) vg_fatal_error( "Programming error\n" ); } -void update_ach_models(void) -{ -#if 0 - world_instance *hub = &_world.instances[k_world_purpose_hub]; - if( hub->status != k_world_status_loaded ) return; -#endif -} - void entity_bh_closest( void *user, u32 item_index, v3f point, v3f closest ) { world_instance *world = user; @@ -599,6 +603,7 @@ void entity_bh_closest( void *user, u32 item_index, v3f point, v3f closest ) void world_entity_start( world_instance *world, vg_msg *sav ) { vg_info( "Start instance %p\n", world ); + _event_system.timed_event_count = 0; for( u32 i=0; ient_event ); i ++ ) { @@ -760,8 +765,36 @@ void _world_raise_event( u32 caller, const char *event_alias ) continue; if( af_str_eq( &world->meta.af, event->pstr_source_event, event_alias, event_alias_hash ) ) - _event_trigger( event ); + { + if( event->delay > 0.001f ) + { + if( _event_system.timed_event_count < VG_ARRAY_LEN(_event_system.timed_events) ) + { + struct ent_event_deferred *def = &_event_system.timed_events[ _event_system.timed_event_count ++ ]; + def->event_index = i; + def->timeleft = event->delay; + } + } + else + _event_trigger( event ); + } + } +} + +void _ent_update(void) +{ + world_instance *world = &_world.main; + u32 j = 0; + for( u32 i=0; i<_event_system.timed_event_count; i ++ ) + { + struct ent_event_deferred *def = &_event_system.timed_events[ i ]; + def->timeleft -= vg.time_delta; + if( def->timeleft <= 0.0f ) + _event_trigger( af_arritm( &world->ent_event, def->event_index ) ); + else + _event_system.timed_events[ j ++ ] = *def; } + _event_system.timed_event_count = j; } static void _event_trigger( ent_event *event ) diff --git a/src/world_entity.h b/src/world_entity.h index 7e392fe..ea3e8b3 100644 --- a/src/world_entity.h +++ b/src/world_entity.h @@ -25,3 +25,4 @@ void update_ach_models(void); extern bh_system bh_system_entity_list; void _world_raise_event( u32 caller, const char *event_alias ); +void _ent_update(void); diff --git a/src/world_map.c b/src/world_map.c index b94f9f5..0c62719 100644 --- a/src/world_map.c +++ b/src/world_map.c @@ -314,7 +314,7 @@ void render_world_map(void) v4f colour = { 1,1,1,1 }; - if( !(glider->flags & 0x1) ) + if( glider->flags & 0x1 ) v3_muls( colour, 0.5f, colour ); gui_icon_setcolour( colour );