X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world_entity.c;h=ec7c2fe13426a5cbc0d773ef7711080bee0b0e80;hb=38514b4ba03412ad51df02dc2ba345e1be41005d;hp=04bbec9891749740e2cc8d51534e710b16371077;hpb=baad90d065899a833390f2f0535cd1fa7799e275;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_entity.c b/world_entity.c index 04bbec9..ec7c2fe 100644 --- a/world_entity.c +++ b/world_entity.c @@ -11,6 +11,7 @@ #include "ent_challenge.h" #include "ent_skateshop.h" #include "ent_route.h" +#include "ent_traffic.h" static void world_entity_focus( u32 entity_id ){ localplayer.immobile = 1; @@ -81,12 +82,14 @@ static void world_entity_focus_preupdate(void){ /* additional renderings like text etc.. */ static void world_entity_focus_render(void){ - if( skaterift.activity != k_skaterift_ent_focus ) + world_instance *world = world_current_instance(); + if( skaterift.activity != k_skaterift_ent_focus ){ + skateshop_render_nonfocused( world, &skaterift.cam ); return; + } u32 type = mdl_entity_id_type( world_static.focused_entity ), index = mdl_entity_id_id( world_static.focused_entity ); - world_instance *world = world_current_instance(); if( type == k_ent_skateshop ){ ent_skateshop *skateshop = mdl_arritm( &world->ent_skateshop, index ); @@ -274,8 +277,7 @@ ent_spawn *world_find_spawn_by_name( world_instance *world, const char *name ) return rp; } -static void ent_volume_call( world_instance *world, ent_call *call ) -{ +static void ent_volume_call( world_instance *world, ent_call *call ){ u32 index = mdl_entity_id_id( call->id ); ent_volume *volume = mdl_arritm( &world->ent_volume, index ); if( !volume->target ) return; @@ -285,9 +287,9 @@ static void ent_volume_call( world_instance *world, ent_call *call ) if( volume->flags & k_ent_volume_flag_particles ){ float *co = alloca( sizeof(float)*3 ); - co[0] = vg_randf64()*2.0f-1.0f; - co[1] = vg_randf64()*2.0f-1.0f; - co[2] = vg_randf64()*2.0f-1.0f; + co[0] = vg_randf64(&vg.rand)*2.0f-1.0f; + co[1] = vg_randf64(&vg.rand)*2.0f-1.0f; + co[2] = vg_randf64(&vg.rand)*2.0f-1.0f; m4x3_mulv( volume->to_world, co, co ); call->function = k_ent_function_particle_spawn; @@ -333,7 +335,7 @@ static void ent_audio_call( world_instance *world, ent_call *call ){ else return; - float chance = vg_randf64()*100.0f, + float chance = vg_randf64(&vg.rand)*100.0f, bar = 0.0f; for( u32 i=0; iclip_count; i++ ){ @@ -558,6 +560,29 @@ static void entity_bh_debug( void *user, u32 item_index ){ } } +static void update_ach_models(void){ + world_instance *hub = &world_static.instances[k_world_purpose_hub]; + if( hub->status != k_world_status_loaded ) return; + + for( u32 i=0; ient_prop ); i ++ ){ + ent_prop *prop = mdl_arritm( &hub->ent_prop, i ); + if( prop->flags & 0x2 ){ + if( MDL_CONST_PSTREQ( &hub->meta, prop->pstr_alias, "MARC" ) ) + if( skaterift.achievements & 0x1 ) + prop->flags &= ~0x1; + if( MDL_CONST_PSTREQ( &hub->meta, prop->pstr_alias, "ALBERT" ) ) + if( skaterift.achievements & 0x2 ) + prop->flags &= ~0x1; + if( MDL_CONST_PSTREQ( &hub->meta, prop->pstr_alias, "JANET" ) ) + if( skaterift.achievements & 0x4 ) + prop->flags &= ~0x1; + if( MDL_CONST_PSTREQ( &hub->meta, prop->pstr_alias, "BERNADETTA" ) ) + if( skaterift.achievements & 0x8 ) + prop->flags &= ~0x1; + } + } +} + static void entity_bh_closest( void *user, u32 item_index, v3f point, v3f closest ){ world_instance *world = user; @@ -650,7 +675,7 @@ static void world_entity_start( world_instance *world, vg_msg *sav ){ } /* LEGACY: check if steam achievements can give us a medal */ - if( steam_ready && steam_stats_ready ){ + if( steam_ready && steam_stats_ready ){ for( u32 j=0; jname,