Exemple #1
0
 /// <summary>
 /// The Captain uses this method to issue orders.
 /// </summary>
 /// <param name="captainsOverrideOrder">The captains override order.</param>
 /// <param name="retainSuperiorsOrder">if set to <c>true</c> [retain superiors order].</param>
 private void OverrideCurrentOrder(FacilityOrder captainsOverrideOrder, bool retainSuperiorsOrder) {
     D.AssertEqual(OrderSource.Captain, captainsOverrideOrder.Source, captainsOverrideOrder.ToString());
     D.AssertNull(captainsOverrideOrder.StandingOrder, captainsOverrideOrder.ToString());
     D.Assert(!captainsOverrideOrder.ToNotifyCmd, captainsOverrideOrder.ToString());
     // if the captain says to, and the current existing order is from his superior, then record it as a standing order
     FacilityOrder standingOrder = null;
     if (retainSuperiorsOrder && CurrentOrder != null) {
         if (CurrentOrder.Source != OrderSource.Captain) {
             // the current order is from the Captain's superior so retain it
             standingOrder = CurrentOrder;
         }
         else {
             // the current order is from the Captain, so its standing order, if any, should be retained
             standingOrder = CurrentOrder.StandingOrder;
         }
     }
     captainsOverrideOrder.StandingOrder = standingOrder;
     CurrentOrder = captainsOverrideOrder;
 }