# ****************************************************************************
# 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.
# ****************************************************************************


include_once processors/ripr_agents/common/common_platform_script.txt

include_once   processors/ripr_agents/aigci/behavior_create_clustering_jobs.txt
include_once   processors/ripr_agents/aigci/behavior_create_flank_jobs.txt
include_once   processors/ripr_agents/aifl/behavior_toggle_windows.txt

processor AIGCI-thinker WSF_RIPR_PROCESSOR

  script_debug_writes   off
  update_interval       5.0 sec

   script_variables
      double   mJobStickiness       =  1.0;
      int      mJobAllocationMode   =  3;
   end_script_variables


   behavior_tree
      behavior_node  toggle_windows
      behavior_node  create_clustering_jobs
     #behavior_node  create_flank_jobs
   end_behavior_tree


   on_initialize
      # job allocation mode enumerations:
      # 0 --> spread (Default -- every subordinate is given the highest priority job that he has the highest bid for. If there are more subordinates than jobs, some subordinates will be left idle. )
      # 1 --> greedy (Every subordinate is given the job he bids highest on with the highest priority, without regard for the maximum number of winners that the job allows. Every subordinate will get a job. (Disregards Job Stickiness value) )
      # 2 --> coverthengreedy (Like spread, but remaining unassigned subordinates will be given the job they bid highest on with the highest priority, even if that results in the job having more winners that the maximum specified. )
      # 3 --> coverthenspread (Like spread, but remaining unassigned subordinates will be spread out over the pool of jobs with no job getting two extra winners before all jobs have one extra winner. )
      # 4 --> strictpriority (Like spread, awards the highest priority job to the highest bidder regardless of the bidder's highest overall bid. )
      SetJobAllocationMode(mJobAllocationMode);
      SetJobStickiness(mJobStickiness);
   end_on_initialize


   on_update
      writeln_d("--- aigci_update Platform: ", PLATFORM.Name(), ", Time: ", TIME_NOW);
   end_on_update

end_processor
