}
}
-void ent_objective_call( world_instance *world, ent_call *call )
+entity_call_result 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 );
- if( call->function == 0 ){
- if( objective->flags & (k_ent_objective_hidden|
- k_ent_objective_passed)) return;
+ if( call->function == 0 )
+ {
+ if( objective->flags & (k_ent_objective_hidden|k_ent_objective_passed))
+ {
+ return k_entity_call_result_OK;
+ }
- if( world_static.challenge_target ){
+ if( world_static.challenge_target )
+ {
if( (world_static.challenge_target == objective) &&
ent_objective_check_filter( objective )){
ent_objective_pass( world, objective );
}
- else {
+ else
+ {
audio_lock();
audio_oneshot_3d( &audio_challenge[6], localplayer.rb.co,
30.0f, 1.0f );
world_static.focused_entity = 0;
}
}
+
+ return k_entity_call_result_OK;
}
- else if( call->function == 2 ){
+ else if( call->function == 2 )
+ {
objective->flags &= ~k_ent_objective_hidden;
if( mdl_entity_id_type( objective->id_next ) == k_ent_objective ){
call->id = objective->id_next;
entity_call( world, call );
}
+ return k_entity_call_result_OK;
}
- else if( call->function == 3 ){
+ else if( call->function == 3 )
+ {
objective->flags |= k_ent_objective_hidden;
if( mdl_entity_id_type( objective->id_next ) == k_ent_objective ){
call->id = objective->id_next;
entity_call( world, call );
}
+ return k_entity_call_result_OK;
}
- else {
- vg_print_backtrace();
- vg_error( "Unhandled function id: %u\n", call->function );
- }
+ else
+ return k_entity_call_result_unhandled;
}