/// <summary>
 /// Initializes a new instance of the <see cref="FleetCreatorEditorSettings" /> struct
 /// when the unit composition is NOT preset.
 /// </summary>
 /// <param name="unitName">Name of the unit.</param>
 /// <param name="isOwnerUser">if set to <c>true</c> [is owner user].</param>
 /// <param name="elementQty">The element qty.</param>
 /// <param name="userRelations">The user relations.</param>
 /// <param name="cmsPerCmd">The CMS per command.</param>
 /// <param name="activeCMs">The active c ms.</param>
 /// <param name="deployDate">The deploy date.</param>
 /// <param name="losTurrets">The LOS turrets.</param>
 /// <param name="missileLaunchers">The missile launchers.</param>
 /// <param name="passiveCMs">The passive c ms.</param>
 /// <param name="shieldGens">The shield gens.</param>
 /// <param name="sensors">The sensors.</param>
 /// <param name="formation">The formation.</param>
 /// <param name="toMove">if set to <c>true</c> [to move].</param>
 /// <param name="findFarthest">if set to <c>true</c> [find farthest].</param>
 /// <param name="toAttack">if set to <c>true</c> [to attack].</param>
 /// <param name="stanceExclusions">The stance exclusions.</param>
 public FleetCreatorEditorSettings(string unitName, bool isOwnerUser, int elementQty, DebugDiploUserRelations userRelations, int cmsPerCmd, int activeCMs,
     GameDate deployDate, DebugLosWeaponLoadout losTurrets, DebugWeaponLoadout missileLaunchers, int passiveCMs, int shieldGens, int sensors,
     DebugFleetFormation formation, bool toMove, bool findFarthest, bool toAttack, DebugShipCombatStanceExclusions stanceExclusions)
     : base(unitName, isOwnerUser, elementQty, userRelations, cmsPerCmd, activeCMs, deployDate, losTurrets, missileLaunchers, passiveCMs,
         shieldGens, sensors) {
     Formation = formation;
     Move = toMove;
     FindFarthest = findFarthest;
     Attack = toAttack;
     StanceExclusions = stanceExclusions;
 }
 private IEnumerable<ShipCombatStance> SelectCombatStances(DebugShipCombatStanceExclusions stanceExclusions) {
     if (stanceExclusions == DebugShipCombatStanceExclusions.AllExceptBalanced) {
         return new ShipCombatStance[] { ShipCombatStance.Balanced };
     }
     if (stanceExclusions == DebugShipCombatStanceExclusions.AllExceptPointBlank) {
         return new ShipCombatStance[] { ShipCombatStance.PointBlank };
     }
     if (stanceExclusions == DebugShipCombatStanceExclusions.AllExceptStandoff) {
         return new ShipCombatStance[] { ShipCombatStance.Standoff };
     }
     else {
         IList<ShipCombatStance> excludedCombatStances = new List<ShipCombatStance>() { default(ShipCombatStance) };
         if (stanceExclusions == DebugShipCombatStanceExclusions.Disengage) {
             excludedCombatStances.Add(ShipCombatStance.Disengage);
         }
         else if (stanceExclusions == DebugShipCombatStanceExclusions.DefensiveAndDisengage) {
             excludedCombatStances.Add(ShipCombatStance.Disengage);
             excludedCombatStances.Add(ShipCombatStance.Defensive);
         }
         return Enums<ShipCombatStance>.GetValuesExcept(excludedCombatStances.ToArray());
     }
 }