private void Button_Click_1(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            Waypoint waypoint = InitDumpWaypoint(telemetry.gps_location.latitude + 0.00003, telemetry.gps_location.longitude, mission.waypoints[0].altitude, mission.waypoints[0].turnMode, mission.waypoints[0].heading, mission.waypoints[0].speed);

            mission.waypoints[0] = waypoint;
            LoadMission.Execute(null);
        }
Example #2
0
 private void HandleServerEventLoadMission(LoadMission message)
 {
     GameNetwork.MyPeer.IsSynchronized = false;
     this.CurrentIntermissionTimer     = 0.0f;
     this.ClientIntermissionState      = MultiplayerIntermissionState.Idle;
     Module.CurrentModule.StartMultiplayerGame(message.GameType, message.Map);
 }
        public void Visit(LoadMission mission)
        {
            var stats = this.game.Derivates.Players.Of[fleet.Owner].DesignStats;

            //TODO(later) check if destination can give population
            if (fleet.Ships.Sum(x => x.PopulationTransport) < fleet.Ships.Sum(x => stats[x.Design].ColonizerPopulation * x.Quantity))
            {
                this.remainingMissions.AddLast(mission);
            }
        }
        //TODO(later) could pick up population in advance if visiting multiple systems and gets intercepted before loading
        //TODO(later) wouldn't move until fully loaded
        void IMissionVisitor.Visit(LoadMission mission)
        {
            var stats    = this.game.Derivates[this.fleet.Owner].DesignStats;
            var capacity = this.fleet.Ships.Sum(x => stats[x.Design].ColonizerPopulation * x.Quantity);

            if (!this.game.States.Stars.At.Contains(this.fleet.Position))
            {
                this.stay();
                return;
            }

            var star      = this.game.States.Stars.At[this.fleet.Position];
            var stellaris = this.game.Derivates[this.game.States.Stellarises.At[star, this.fleet.Owner].First()];

            var newFleet          = this.localFleet();
            var availableMigrants = stellaris.IsMigrants;

            foreach (var group in newFleet.Ships)
            {
                var embarked = Math.Min(stats[group.Design].ColonizerPopulation * group.Quantity - group.PopulationTransport, availableMigrants);

                group.PopulationTransport += embarked;
                availableMigrants         -= embarked;
            }

            var totalEmbarked = stellaris.IsMigrants - availableMigrants;

            Methods.WeightedPointDealing(totalEmbarked,
                                         this.game.Derivates.Colonies.At[stellaris.Location, stellaris.Owner].
                                         Select(colonyProc => new PointReceiver <ColonyProcessor>(
                                                    colonyProc,
                                                    1 - colonyProc.Desirability,
                                                    () => colonyProc.Colony.Population,
                                                    x => colonyProc.Colony.Population -= x
                                                    )));
            stellaris.IsMigrants = availableMigrants;

            var endTime = this.time;

            if (newFleet.Ships.Sum(x => x.PopulationTransport) < capacity)
            {
                newFleet.Missions.AddFirst(new LoadMission());
                endTime = 1;
            }

            this.movementSteps.Add(new FleetMovement(
                                       this.fleet,
                                       newFleet,
                                       this.time,
                                       endTime,
                                       new Vector2D()
                                       ));
            this.time = endTime;
        }
 private void LoadMission_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
 {
     LoadMission.Execute(null);
 }
 public void Visit(LoadMission mission)
 {
     //No operation
 }
Example #7
0
 void IMissionVisitor.Visit(LoadMission mission)
 {
     this.stop        = true;
     this.destination = null;
 }