//--------    FILE: alpha.bhv  -------------

initialize   DEPLOY  = false
initialize   RETURN  = false
initialize   LOITER  = true
initialize   CONVOY  = false
initialize   AVOID   = true
  
set MODE = ACTIVE {
  DEPLOY = true
} INACTIVE

set MODE = STATION-KEEPING {
  MODE = ACTIVE
  STATION_KEEP = true
}                       

set MODE = CONVOYING {
  MODE = ACTIVE
  CONVOY = true
  RETURN != true
} 

set MODE = LOITERING {
  MODE = ACTIVE
  RETURN != true
  LOITER = true
} 

set MODE = RETURNING {
  MODE = ACTIVE
  RETURN = true
} 


//----------------------------------------------
Behavior = BHV_Loiter
{
  name      = loiter
  pwt       = 100
  condition = MODE==LOITERING
  updates   = UP_LOITER

         speed = 3.4
     clockwise = false
        radius = 8.0
     nm_radius = 15.0
       polygon = radial:: x=0, y=-70, radius=20, pts=8, snap=1, label=$(VNAME)_LOITER
  visual_hints = nextpt_color=white, nextpt_lcolor=khaki
  visual_hints = edge_color=orange, vertex_color=white
  visual_hints = edge_size=1, vertex_size=2
}


//----------------------------------------------
Behavior = BHV_Convoy
{
  name       = convoy
  pwt        = 100
  condition  = MODE==CONVOYING
  updates    = UP_CONVOY

  contact    = abe

  rng_estop = 15
  spd_max   = 4

  // Speed Regime A: Just specify the cruise speed and this
  // will be used unless it gets within estop range
  // cruise_speed = 3.5

  // Speed Regime B: Specify a speed range between tailgating
  // and lagging, where the chosen speed will match the leader
  // vehicle's speed. If tailgating chosen speed will be
  // leader_speed * speed_slower
  // If lagging, chosen speed will be leader_speed * spd_faster
   spd_slower = 0.8
   spd_faster = 1.2
   rng_tgating = 25
   rng_lagging = 40

        radius = 8.0
     nm_radius = 15.0

  inter_mark_range = 5
  max_mark_range = 80
}

//----------------------------------------------
Behavior = BHV_StationKeep
{
  name         = station-keep
  pwt          = 100
  condition    = MODE==STATION-KEEPING
  inactiveflag = STATIONING = false
  activeflag   = STATIONING = true

     center_activate = true
        inner_radius = 5
        outer_radius = 10 
         outer_speed = 1.0

       transit_speed = 1.3
          swing_time = 7
        visual_hints = vertex_size=0, edge_color=gray50
}


//----------------------------------------------
//Behavior = BHV_AvoidCollision
{
  name       = avdcol_
  pwt        = 350
  condition  = AVOID = true 
  condition  = MODE==ACTIVE
  condition  = MODE!=ACTIVE:STATION-KEEPING
  updates    = CONTACT_INFO
  endflag    = CONTACT_RESOLVED = $[CONTACT]
  templating = spawn

             contact = to-be-set
    on_no_contact_ok = true
         extrapolate = true
               decay = 30,60

        pwt_outer_dist = 35
        pwt_inner_dist = 10
        completed_dist = 40
     min_util_cpa_dist = 10
     max_util_cpa_dist = 18
             pwt_grade = linear
//   bearing_line_config = white:0, green:0.65, yellow:0.8, red:1.0
}


//----------------------------------------------
Behavior = BHV_Waypoint
{
  name       = waypt_return
  pwt        = 100
  updates    = RETURN_UPDATE
  condition  = MODE==RETURNING
  perpetual  = true
  endflag    = RETURN = false
  endflag    = STATION_KEEP = true

           speed = 2.0
  capture_radius = 2.0
     slip_radius = 8.0
           point = $(START_POS)

     visual_hints = vertex_size  = 4             // default
     visual_hints = vertex_color = dodger_blue   // default

}