Exemplo n.º 1
0
 public void Visit(DisembarkMission mission)
 {
     if (fleet.Ships.Sum(x => x.PopulationTransport) > 0 || this.remainingMissions.Any(x => x is LoadMission))
     {
         this.remainingMissions.AddLast(mission);
     }
 }
        void IMissionVisitor.Visit(DisembarkMission mission)
        {
            if (!this.game.States.Stars.At.Contains(this.fleet.Position))
            {
                this.unfinishedMissions.AddLast(mission);
                this.stay();
                return;
            }

            var newFleet     = this.localFleet();
            var destinations = this.game.States.Colonies.
                               AtStar[this.game.States.Stars.At[this.fleet.Position], this.fleet.Owner].
                               Select(x => this.game.Derivates[x]).
                               ToList();

            foreach (var group in newFleet.Ships.Where(x => x.PopulationTransport > 0))
            {
                group.PopulationTransport = Methods.WeightedPointDealing(
                    group.PopulationTransport,
                    destinations.Select(site => new PointReceiver <ColonyProcessor>(
                                            site,
                                            site.Desirability,
                                            () => site.MaxPopulation - site.Colony.Population,
                                            x => site.Colony.Population += x
                                            ))
                    );
            }

            this.movementSteps.Add(new FleetMovement(
                                       this.fleet,
                                       newFleet,
                                       this.time,
                                       1,
                                       new Vector2D()
                                       ));

            this.time = 1;
        }
 public void Visit(DisembarkMission mission)
 {
     //No operation
 }
Exemplo n.º 4
0
 void IMissionVisitor.Visit(DisembarkMission mission)
 {
     this.stop = true;
 }