#include "world.h"
#include "world_load.h"
#include "entity.h"
+#include "audio.h"
+#include "steam.h"
-VG_STATIC void ent_objective_pass( world_instance *world,
+static void ent_objective_pass( world_instance *world,
ent_objective *objective ){
if( objective->id_next ){
world_static.challenge_timer += objective->filter;
if( next->filter & k_ent_objective_filter_passthrough )
ent_objective_pass( world, next );
- else
+ else{
vg_info( "pass challenge point\n" );
+ audio_lock();
+ audio_oneshot_3d( &audio_challenge[0], localplayer.rb.co,
+ 30.0f, 1.0f );
+ audio_unlock();
+ }
}
else {
- vg_success( "NYU Film school graduate SUCKAH\n" );
+ vg_success( "challenge win\n" );
+ audio_lock();
+ audio_oneshot( &audio_challenge[2], 1.0f, 0.0f );
+ audio_unlock();
world_static.challenge_target = NULL;
world_static.challenge_timer = 0.0f;
+ world_static.focused_entity = 0;
if( objective->id_win ){
ent_call call;
call.id = objective->id_win;
entity_call( world, &call );
}
+
+ u32 world_completed = 1;
+ for( u32 i=0; i<mdl_arrcount(&world->ent_challenge); i++ ){
+ ent_challenge *challenge = mdl_arritm( &world->ent_challenge, i );
+ if( !challenge->status ){
+ world_completed = 0;
+ break;
+ }
+ }
+
+ if( world_completed ){
+ const char *understate = "Understate DIY park";
+ if( mdl_pstreq( &world->meta, world->info.pstr_name,
+ understate, vg_strdjb2( understate ))){
+ steam_set_achievement( "CITY_COMPLETE" );
+ steam_store_achievements();
+ }
+ }
}
}
-VG_STATIC int ent_objective_check_filter( ent_objective *objective ){
+static int ent_objective_check_filter( ent_objective *objective ){
if( objective->filter ){
- struct player_skate_state *s = &localplayer._skate.state;
+ struct player_skate_state *s = &player_skate.state;
enum trick_type trick = s->trick_type;
u32 state = 0x00;
}
}
-VG_STATIC void ent_objective_call( world_instance *world, ent_call *call ){
+static void ent_objective_call( world_instance *world, ent_call *call ){
u32 index = mdl_entity_id_id( call->id );
ent_objective *objective = mdl_arritm( &world->ent_objective, index );
ent_objective_pass( world, objective );
}
else {
- vg_error( "womp womp\n" );
+ audio_lock();
+ audio_oneshot_3d( &audio_challenge[6], localplayer.rb.co,
+ 30.0f, 1.0f );
+ audio_unlock();
+ vg_error( "challenge failed\n" );
world_static.challenge_target = NULL;
world_static.challenge_timer = 0.0f;
+ world_static.focused_entity = 0;
}
}
}