# ****************************************************************************
# CUI
#
# The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
#
# The use, dissemination or disclosure of data in this file is subject to
# limitation or restriction. See accompanying README and LICENSE for details.
# ****************************************************************************
#for RED_ADV_FIGHTER_1
include_once red_adv_fighter_1_base.txt

#for AIAI-thinker
include_once processors/ripr_agents/aiai/aiai_processor.txt

#for red_mr_a2a_rf_missile
include_once weapons/aam/red_mr_a2a_rf_missile.txt

include_once weapons/aam/simple_blue_lr_a2a_rf_missile.txt




platform_type RED_ADV_FIGHTER_1 RED_ADV_FIGHTER_1_BASE

  //use a different missile for this type
  //adjust missile ranges in int-thinker below to accomodate
  delete weapon int_missile

  #weapon int_missile RED_MR_A2A_RF_MISSILE end_weapon    # ~45 nm range

  weapon blue_lr_a2a_rf_missile SIMPLE_BLUE_LR_A2A_RF_MISSILE end_weapon  # ~60 nm range
  edit weapon blue_lr_a2a_rf_missile
     quantity 8
  end_weapon

   //This is the code that lets the interceptor intercept
   processor int-thinker AIAI-thinker
      script_variables
         #agentProductions must be relative to working directory of application
         #this file usually sits in scenario_name/platforms folder
         #working directory is typically the scenario folder
         #agentProductions = "../ripr/agents/aiai/RIPR-AIAI.soar";

        #mWeaponArray[0] = Map<string, Object>();
        #mWeaponArray[0].Set("name", "int_missile");
        #mWeaponArray[0].Set("weapon", PLATFORM.Weapon("int_missile"));
        #mWeaponArray[0].Set("rangeMin", 5556);
        #mWeaponArray[0].Set("rangeMax", 83340);
        #mWeaponArray[0].Set("numActiveMax", 2); // how many weapons of this type can be in play simultaneously

         mWeaponArray[0] = Map<string, Object>();
         mWeaponArray[0].Set("name", "blue_lr_a2a_rf_missile");
         mWeaponArray[0].Set("weapon", PLATFORM.Weapon("blue_lr_a2a_rf_missile"));
         mWeaponArray[0].Set("rangeMin", 1000);
         mWeaponArray[0].Set("rangeMax", 111120); // ~60 miles
         mWeaponArray[0].Set("numActiveMax", 2); // how many weapons of this type can be in play simultaneously

      end_script_variables
   end_processor

   sensor geo_sensor WSF_GEOMETRIC_SENSOR
      //azimuth_field_of_view -180.0 degrees 180.0 degrees
      //elevation_field_of_view -90.0 degrees 90.0 degrees
      azimuth_field_of_view -60.0 degrees 60.0 degrees
      elevation_field_of_view -30.0 degrees 30.0 degrees
      minimum_range 0 m
#      maximum_range 100000 m
      maximum_range 63000 m
      on
      frame_time              0.5 sec
      reports_location
      reports_velocity
      reports_iff
      track_quality 1.0
      ignore_same_side
      internal_link track_manager
   end_sensor

   processor incoming_threats WSF_THREAT_PROCESSOR
     update_interval 0.1 sec
     #update_interval 2.0 sec

      #1300 knots
      threat_velocity 668.7778 m/s

      threat_angle_spread 15.0 deg
      threat_time_to_intercept 240 sec

      script void identified_new_threat(WsfTrack aTrack)
         writeln("!!! me: ", PLATFORM.Name(), ", new threat: ", aTrack.TargetName());
      end_script

      script void dropped_threat(WsfTrack aTrack)
         if (aTrack.IsValid())
         {
            writeln("!!! ", PLATFORM.Name(), " dropped a threat: ", aTrack.TargetName());
         }
         else
         {
            writeln("!!! ", PLATFORM.Name(), " dropped a threat");
         }
      end_script

   end_processor

end_platform_type
