Exemple #1
0
        public IEnumerable <Order> Handle(ConvoyDeployment Deployment)
        {
            var order = Deployment.Units
                        .Where(i => !Root.UnitAssignments.GetAssignments(i).Any(
                                   j => j.Object == i && j.AssignmentType == UnitAssignmentType.CARRIER))
                        .ToList();

            order.Sort(new FluentComparator <Unit>(i => i.Configuration.IsVehicle)
                       .ThenCompare(i => i.Configuration.IsArmored)
                       .ThenCompare(i => i.Configuration.UnitClass != UnitClass.TRANSPORT)
                       .ThenCompare(i => i.Configuration.Movement)
                       .Invert());

            foreach (var assignment in order.SelectMany(
                         i => Root.UnitAssignments.GetAssignments(i)).Where(i => i.AssignmentType == UnitAssignmentType.CARRIER))
            {
                yield return(new LoadOrder(assignment.Subject, assignment.Object, false));
            }
            yield return(new ConvoyOrderDeployOrder(Deployment, order));

            var entryTiles = Root.Match.GetMap().TilesEnumerable.Where(
                i => i.Configuration.HasPathOverlay(TilePathOverlay.ROAD) &&
                Deployment.Validate(i) == OrderInvalidReason.NONE).ToList();

            yield return(new EntryTileDeployOrder(
                             Deployment,
                             entryTiles.ArgMax(
                                 i => Root.Random.NextDouble() - (.9 + Root.Random.NextDouble() * .1)
                                 * order.Sum(j => Root.TileEvaluations.GetThreatRating(i, j)))));
        }
 void HighlightDeploymentArea(object Sender, EventArgs E)
 {
     _Controller.Highlight(
         _Controller.Match.GetMap().TilesEnumerable.Where(
             i => _Deployment.Validate(i) == OrderInvalidReason.NONE)
         .Select(i => new Tuple <Tile, Color>(
                     i, _Deployment.EntryTile == i
                                 ? HumanMatchPlayerController.HIGHLIGHT_COLORS.Last()
                                 : HumanMatchPlayerController.HIGHLIGHT_COLORS.First())));
 }
Exemple #3
0
 public override OrderInvalidReason Validate()
 {
     return(Deployment.Validate(ConvoyOrder));
 }
 public override OrderInvalidReason Validate()
 {
     return(Deployment.Validate(Tile));
 }