challenge effects
[carveJwlIkooP6JGAAIwe30JlM.git] / ent_objective.c
index 330e60fcb97524075020360909c37be6a1dcf848..68a3dd015f69882562201beadc2111940adeb19d 100644 (file)
@@ -8,11 +8,12 @@
 VG_STATIC void ent_objective_pass( world_instance *world, 
                                    ent_objective *objective ){
    if( objective->id_next ){
-      world->challenge_timer += objective->filter;
+      world_static.challenge_timer += objective->filter;
 
       u32 index = mdl_entity_id_id( objective->id_next );
       ent_objective *next = mdl_arritm( &world->ent_objective, index );
-      world->challenge_target = next;
+      world_static.challenge_target = next;
+      objective->flags |= k_ent_objective_passed;
 
       if( next->filter & k_ent_objective_filter_passthrough )
          ent_objective_pass( world, next );
@@ -21,8 +22,8 @@ VG_STATIC void ent_objective_pass( world_instance *world,
    }
    else {
       vg_success( "NYU Film school graduate SUCKAH\n" );
-      world->challenge_target = NULL;
-      world->challenge_timer = 0.0f;
+      world_static.challenge_target = NULL;
+      world_static.challenge_timer = 0.0f;
 
       if( objective->id_win ){
          ent_call call;
@@ -72,29 +73,21 @@ VG_STATIC void ent_objective_call( world_instance *world, ent_call *call ){
    ent_objective *objective = mdl_arritm( &world->ent_objective, index );
 
    if( call->function == 0 ){
-      if( objective->flags & k_ent_objective_hidden ) return;
+      if( objective->flags & (k_ent_objective_hidden|
+                              k_ent_objective_passed)) return;
 
-      if( world->challenge_target ){
-         if( (world->challenge_target == objective) && 
+      if( world_static.challenge_target ){
+         if( (world_static.challenge_target == objective) && 
               ent_objective_check_filter( objective )){
             ent_objective_pass( world, objective );
          }
          else {
             vg_error( "womp womp\n" );
-            world->challenge_target = NULL;
-            world->challenge_timer = 0.0f;
+            world_static.challenge_target = NULL;
+            world_static.challenge_timer = 0.0f;
          }
       }
    }
-#if 0
-   else if( call->function == 1 ){
-      if( objective->flags & k_ent_objective_hidden ) return;
-
-      vg_info( "begin the challenge\n" );
-      world->challenge_timer = 0.0f;
-      ent_objective_pass( world, objective );
-   }
-#endif
    else if( call->function == 2 ){
       objective->flags &= ~k_ent_objective_hidden;