private void departureStage2()
        {
            if (RmmUtil.IsDocked(_vessel, _departurePart))
            {
                abortDeparture();
            }
            else
            {
                _departureVessel = _departurePart.vessel;
            }

            if (_departureVessel.isActiveVessel)
            {
                foreach (Vessel ves in FlightGlobals.Vessels)
                {
                    if (!ves.packed && ves.loaded && ves.id != _departureVessel.id)
                    {
                        FlightGlobals.SetActiveVessel(ves);
                        _departureStage = 3;
                        _nextLogicTime  = Planetarium.GetUniversalTime() + 1;
                        return;
                    }
                }
            }
            else
            {
                _departureStage = 3;
                _nextLogicTime  = Planetarium.GetUniversalTime() + 1;
            }
        }
Exemple #2
0
 public void StartArrival(RoutineArrivalMission mission, Vessel targetVessel)
 {
     _mission        = mission;
     _targetVessel   = targetVessel;
     _targetPart     = RmmUtil.GetVesselPart(targetVessel, mission.flightIdArrivalDockPart);
     CompleteArrival = true;
     _nextLogicTime  = Planetarium.GetUniversalTime();
     _arrivalStage   = 0;
 }
 private void departureStage1()
 {
     if (RmmUtil.IsDocked(_vessel, _part))
     {
         ModuleDockingNode DockNode = _part.Modules.OfType <ModuleDockingNode>().FirstOrDefault();
         DockNode.Undock();
     }
     _departureStage = 2;
     _nextLogicTime  = Planetarium.GetUniversalTime() + 2;
 }
 public void StartDeparture(RoutineDepartureMission mission, Vessel vessel)
 {
     _mission          = mission;
     _vessel           = vessel;
     _part             = RmmUtil.GetVesselPart(vessel, mission.flightIdDepartureDockPart);
     _departurePart    = RmmUtil.GetDockedPart(FlightGlobals.ActiveVessel, _part);
     CompleteDeparture = true;
     _nextLogicTime    = Planetarium.GetUniversalTime();
     _departureStage   = 0;
 }
Exemple #5
0
        private void dockStage5()
        {
            RmmUtil.ToMapView();
            if (RmmUtil.IsDocked(_targetVessel, _targetPart) ||
                (_nextLogicTime < (Planetarium.GetUniversalTime() - 8)))
            {
                ScreenMessages.PostScreenMessage(_mission.VesselName + " docked", 4, ScreenMessageStyle.UPPER_CENTER);

                finishArrival();
            }
        }
Exemple #6
0
        public override void WindowUI()
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("Mission Name:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
            trackStrName = GUILayout.TextField(trackStrName, 20, RmmStyle.Instance.TextFieldStyle, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            if (_type != 20)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Label("Vessel:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                GUILayout.Label(VesselName, RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                GUILayout.EndHorizontal();
            }

            if (_type != 20)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Label("Price:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                GUILayout.Label(Price.ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                GUILayout.EndHorizontal();
            }

            GUILayout.BeginHorizontal();
            GUILayout.Label("Minimum Crew:", RmmStyle.Instance.LabelStyle, GUILayout.Width(150));
            GUILayout.Label(MinimumCrew.ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            if (MinimumResources != null && MinimumResources.Count > 0)
            {
                GUILayout.Label("Minimum Resources:", RmmStyle.Instance.LabelStyle, GUILayout.Width(150));

                GUILayout.BeginHorizontal();
                GUILayout.Label("Resource", RmmStyle.Instance.LabelStyle, GUILayout.Width(150));
                GUILayout.Label("Amount", RmmStyle.Instance.LabelStyle, GUILayout.Width(150));
                GUILayout.EndHorizontal();
                foreach (Resource resource in MinimumResources)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label(RmmUtil.DisplayName(resource.Name), RmmStyle.Instance.LabelStyle, GUILayout.Width(150));
                    GUILayout.Label(Math.Round(resource.Amount, 2).ToString(), GUILayout.Width(150));
                    GUILayout.EndHorizontal();
                }
            }

            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Start Tracking", RmmStyle.Instance.ButtonStyle, GUILayout.Width(200), GUILayout.Height(22)))
            {
                _trackingControl.StartTracking(trackStrName);
            }
            GUILayout.EndHorizontal();
        }
        private void DepartureCompletion()
        {
            RmmUtil.ToMapView();
            RmmContract.HandleContracts(_departureVessel, false, true);
            if (HighLogic.CurrentGame.Mode == Game.Modes.CAREER)
            {
                Funding.Instance.AddFunds(_mission.Price + cargoFee(), TransactionReasons.VesselRecovery);
            }

            handleUnloadCrew(_departureVessel, true);
            _departureVessel.Unload();
            _departureVessel.Die();

            ScreenMessages.PostScreenMessage(_mission.VesselName + " returned to " + RmmUtil.HomeBodyName(), 4, ScreenMessageStyle.UPPER_CENTER);
            finishDeparture();
        }
Exemple #8
0
        private void dockStage2()
        {
            RmmUtil.ToMapView();
            LoggerRmm.Debug("st2.1");
            ProtoVessel ProtoFlightVessel = loadVessel(_mission.FolderPath);

            LoggerRmm.Debug("st2.2");
            if (ProtoFlightVessel == null)
            {
                abortArrival(); return;
            }
            LoggerRmm.Debug("st2.3");
            if (loadVesselForRendezvous(ProtoFlightVessel, _targetVessel))
            {
                LoggerRmm.Debug("st2.4");
                _nextLogicTime = Planetarium.GetUniversalTime();
                _arrivalStage  = 3;
            }
        }
        private double cargoFee()
        {
            double fee = 0.0;

            if (_mission.CargoMass == 0)
            {
                return(0);
            }

            double cargoMass = _mission.CargoMass;

            List <string> cargoArray = RmmUtil.GetCargoArray(_departureVessel, _mission.Proppelants);

            orderCargoArray(ref cargoArray);

            foreach (String s in cargoArray)
            {
                foreach (Part p in _departureVessel.parts)
                {
                    foreach (PartResource r in p.Resources)
                    {
                        if (r.info.name == s)
                        {
                            if (r.amount != 0)
                            {
                                if (RmmUtil.Mass(r.info.name, r.amount) <= cargoMass)
                                {
                                    fee       = fee + RmmUtil.Cost(r.info.name, r.amount);
                                    cargoMass = cargoMass - RmmUtil.Mass(r.info.name, r.amount);
                                }
                                else
                                {
                                    fee = fee + ((cargoMass / RmmUtil.Mass(r.info.name, r.amount)) * RmmUtil.Cost(r.info.name, r.amount));
                                    return(fee);
                                }
                            }
                        }
                    }
                }
            }
            return(fee);
        }
        public static List <MissionResource> GetMissionResourceList(List <Part> parts)
        {
            List <MissionResource> missionResources = new List <MissionResource>();

            List <string> resources = RmmUtil.DetermineResourceArray(parts);


            foreach (String resource in resources)
            {
                var amount = RmmUtil.ReadResource(parts, resource);
                if (amount != 0)
                {
                    MissionResource missionResource = new MissionResource
                    {
                        Name   = resource,
                        Amount = amount,
                    };
                    missionResources.Add(missionResource);
                }
            }

            return(missionResources);
        }
Exemple #11
0
        private void dockStage4()
        {
            RmmUtil.ToMapView();
            Part placePort = new Part();

            // int portNumber = 0;
            foreach (Part p in transactionVessel.parts)
            {
                if (p.flightID == missionFlightIDDockPart)
                {
                    placePort = p;
                }
                foreach (PartModule pm in p.Modules)
                {
                    //if (pm.GetType() == typeof(ModuleDockingNode))
                    //{
                    //    RMMModule ComOffMod = p.Modules.OfType<RMMModule>().FirstOrDefault();
                    //    if (ComOffMod.trackingPrimary == true)
                    //    {
                    //        placePort = p;
                    //        if (missionOffering.ReturnEnabled)
                    //        {
                    //            ComOffMod.commercialvehiclemode = true;
                    //            ComOffMod.commercialvehicleFolderName = missionOffering.FolderPath;
                    //            ComOffMod.commercialvehiclePartCount = (float)RmmUtil.CountVesselParts(transactionVessel);
                    //            ComOffMod.trackingPrimary = false;
                    //        }
                    //    }
                    //    portNumber = portNumber + 1;
                    //
                    //    ComOffMod.trackingActive = false;
                    //    ComOffMod.returnMission = false;
                    //    ComOffMod.trackMissionId = "";
                    //    ComOffMod.PortCode = "";
                    //}

                    // empty all science
                    if (pm.GetType() == typeof(ModuleScienceContainer))
                    {
                        ModuleScienceContainer moduleScienceContainer = (ModuleScienceContainer)pm;
                        var scienceDatas = moduleScienceContainer.GetData();
                        for (int i = 0; i < scienceDatas.Count(); i++)
                        {
                            moduleScienceContainer.RemoveData(scienceDatas[i]);
                        }
                    }
                }
            }
            transactionVessel.targetObject = null;
            handleLoadCrew(transactionVessel, _mission.CrewCount, _mission.MinimumCrew, _mission.CrewSelection);
            RmmContract.HandleContracts(transactionVessel, true, false);
            LoggerRmm.Debug("st4.5" + RmmUtil.IsDocked(_targetVessel, _targetPart) + checkDockingPortCompatibility(placePort, _targetPart));
            if (!RmmUtil.IsDocked(_targetVessel, _targetPart) && checkDockingPortCompatibility(placePort, _targetPart))
            {
                LoggerRmm.Debug("st4.6");
                placeVesselForDock(transactionVessel, placePort, _targetVessel, _targetPart, RmmUtil.GetDockingDistance(placePort));
                LoggerRmm.Debug("st4.7");
                _nextLogicTime = Planetarium.GetUniversalTime();
                _arrivalStage  = 5;
            }
            else
            {
                ScreenMessages.PostScreenMessage(_mission.VesselName + " rendezvoused", 4, ScreenMessageStyle.UPPER_CENTER);
                finishArrival();
            }
        }
        public override void WindowUI()
        {
            if (RoutineDepartureMission != null)
            {
                if (RoutineDepartureMission.Kind == MissionKind.Ordered)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Order:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                    GUILayout.Label(RoutineDepartureMission.OrderId, RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                    GUILayout.EndHorizontal();
                }

                GUILayout.BeginHorizontal();
                GUILayout.Label("Mission:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                GUILayout.Label(RoutineDepartureMission.Name, RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                GUILayout.Label("System:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                GUILayout.Label(RoutineDepartureMission.VesselName, RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                GUILayout.Label("Return Fee:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                GUILayout.Label(Math.Round(RoutineDepartureMission.Price).ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(250));
                GUILayout.EndHorizontal();

                if (RoutineDepartureMission.CargoMass > 0)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Cargo Fee:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                    GUILayout.Label(Math.Round(CurrentCargoFunds, 2).ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                    GUILayout.EndHorizontal();
                }

                GUILayout.BeginHorizontal();
                GUILayout.Label("Duration:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                GUILayout.Label(RmmUtil.TimeString(RoutineDepartureMission.Duration), RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                GUILayout.EndHorizontal();

                if (RoutineDepartureMission.Kind == MissionKind.Ordered)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("ETD:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                    GUILayout.Label(RmmUtil.TimeEtaString(RoutineDepartureMission.DepartureTime - Planetarium.GetUniversalTime()), RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                    GUILayout.EndHorizontal();
                }

                if (RoutineDepartureMission.MinimumCrew > 0)
                {
                    if (RoutineDepartureMission.MinimumCrew < RoutineDepartureMission.CrewCapacity)
                    {
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Minimal crew required:", RmmStyle.Instance.LabelStyle, GUILayout.Width(150));
                        GUILayout.Label(RoutineDepartureMission.MinimumCrew.ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                        GUILayout.EndHorizontal();

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Crew capacity:", RmmStyle.Instance.LabelStyle, GUILayout.Width(150));
                        GUILayout.Label(RoutineDepartureMission.CrewCapacity.ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                        GUILayout.EndHorizontal();
                    }
                    else
                    {
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Crew:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                        GUILayout.Label(RoutineDepartureMission.MinimumCrew.ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                        GUILayout.EndHorizontal();
                    }
                }

                if (RoutineDepartureMission.MinimumCrew < RoutineDepartureMission.CrewCapacity)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Current crew:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                    GUILayout.Label(CrewCount.ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(50));
                    GUILayout.EndHorizontal();
                }

                if (Resources != null && Resources.Count > 0)
                {
                    GUILayout.Label("Resources:", RmmStyle.Instance.LabelStyle, GUILayout.Width(300));
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Resource", RmmStyle.Instance.LabelStyle, GUILayout.Width(150));
                    GUILayout.Label("Required", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                    GUILayout.Label("Current", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                    GUILayout.EndHorizontal();
                    foreach (ResourceItem resource in Resources)
                    {
                        GUILayout.BeginHorizontal();
                        GUILayout.Label(resource.Name, RmmStyle.Instance.LabelStyle, GUILayout.Width(150));
                        GUILayout.Label(Math.Round(resource.RequiredAmount, 2).ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                        GUILayout.Label(Math.Round(resource.CurrentAmount, 2).ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                        GUILayout.EndHorizontal();
                    }
                }


                if (RoutineDepartureMission.CargoMass > 0)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Cargo mass:", RmmStyle.Instance.LabelStyle, GUILayout.Width(150));
                    GUILayout.Label(Math.Round(RoutineDepartureMission.CargoMass, 2).ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                    GUILayout.EndHorizontal();
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Current cargo mass:", RmmStyle.Instance.LabelStyle, GUILayout.Width(150));
                    GUILayout.Label(Math.Round(CurrentCargoMass, 2).ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                    GUILayout.EndHorizontal();
                }

                GUILayout.BeginHorizontal();
                GUILayout.Label("Docking Port:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                GUILayout.Label(strDepartureDockingPortName, RmmStyle.Instance.LabelStyle, GUILayout.Width(50));
                GUILayout.EndHorizontal();

                if (messages != null && messages.Count > 0)
                {
                    GUILayout.Label("", RmmStyle.Instance.LabelStyle, GUILayout.Width(300));
                    foreach (String message in messages)
                    {
                        GUILayout.Label(message, RmmStyle.Instance.LabelStyle, GUILayout.Width(300));
                    }
                }

                if (RoutineDepartureMission.Kind == MissionKind.Potential)
                {
                    if (GUILayout.Button("Order Return", RmmStyle.Instance.ButtonStyle, GUILayout.Width(300), GUILayout.Height(22)))
                    {
                        CheckList checkList = _routineControl.OrderDepartureMissionAllowed();
                        if (checkList.CheckSucces)
                        {
                            _routineControl.OrderDepartureMission();
                            base.Close();
                        }
                        else
                        {
                            messages = checkList.Messages;
                        }
                    }
                }
                if (RoutineDepartureMission.Kind == MissionKind.Ordered)
                {
                    if (GUILayout.Button("Cancel Return", RmmStyle.Instance.ButtonStyle, GUILayout.Width(300), GUILayout.Height(22)))
                    {
                        _routineControl.CancelDepartureMission();
                        base.Close();
                    }
                }
            }
        }
Exemple #13
0
        public override void WindowUI()
        {
            if (RoutineArrivalMission != null)
            {
                if (RoutineArrivalMission.Kind == MissionKind.Ordered)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Order:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                    GUILayout.Label(RoutineArrivalMission.OrderId, RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                    GUILayout.EndHorizontal();
                }

                GUILayout.BeginHorizontal();
                GUILayout.Label("Mission:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                GUILayout.Label(RoutineArrivalMission.Name, RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                GUILayout.Label("System:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                GUILayout.Label(RoutineArrivalMission.VesselName, RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                GUILayout.Label("Price:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                GUILayout.Label(Math.Round(RoutineArrivalMission.Price).ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(250));
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                GUILayout.Label("Duration:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                GUILayout.Label(RmmUtil.TimeString(RoutineArrivalMission.Duration), RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                GUILayout.EndHorizontal();

                if (RoutineArrivalMission.Kind == MissionKind.Ordered)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("ETA:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                    GUILayout.Label(RmmUtil.TimeEtaString(RoutineArrivalMission.ArrivalTime - Planetarium.GetUniversalTime()), RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                    GUILayout.EndHorizontal();
                }

                if (RoutineArrivalMission.MinimumCrew > 0)
                {
                    if (RoutineArrivalMission.MinimumCrew < RoutineArrivalMission.CrewCapacity)
                    {
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Minimal crew required:", RmmStyle.Instance.LabelStyle, GUILayout.Width(150));
                        GUILayout.Label(RoutineArrivalMission.MinimumCrew.ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                        GUILayout.EndHorizontal();

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Maximum crew capacity:", RmmStyle.Instance.LabelStyle, GUILayout.Width(150));
                        GUILayout.Label(RoutineArrivalMission.CrewCapacity.ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                        GUILayout.EndHorizontal();
                    }
                    else
                    {
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Crew:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                        GUILayout.Label(RoutineArrivalMission.MinimumCrew.ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(200));
                        GUILayout.EndHorizontal();
                    }
                }

                if (RoutineArrivalMission.MinimumCrew < RoutineArrivalMission.CrewCapacity)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Planned crew:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                    GUILayout.Label(RoutineArrivalMission.CrewCount.ToString(), RmmStyle.Instance.LabelStyle, GUILayout.Width(50));
                    if (RoutineArrivalMission.Kind == MissionKind.Potential)
                    {
                        strCrewCount = GUILayout.TextField(strCrewCount, 3, GUILayout.Width(50));

                        if (GUILayout.Button("set", RmmStyle.Instance.ButtonStyle, GUILayout.Width(50), GUILayout.Height(22)))
                        {
                            int crewCount = 0;
                            int.TryParse(strCrewCount, out crewCount);
                            if (RoutineArrivalMission.CrewCount < RoutineArrivalMission.MinimumCrew)
                            {
                                crewCount = RoutineArrivalMission.MinimumCrew;
                            }
                            if (RoutineArrivalMission.CrewCount > RoutineArrivalMission.CrewCapacity)
                            {
                                crewCount = RoutineArrivalMission.CrewCapacity;
                            }
                            RoutineArrivalMission.CrewCount = crewCount;
                        }
                    }
                    GUILayout.EndHorizontal();
                }
                if (!String.IsNullOrEmpty(RoutineArrivalMission.CrewSelection))
                {
                    GUILayout.Label(RoutineArrivalMission.CrewSelection, RmmStyle.Instance.LabelStyle, GUILayout.Width(300));
                }

                if (RoutineArrivalMission.CrewCapacity > 0)
                {
                    GUILayout.BeginHorizontal();
                    if (RoutineArrivalMission.Kind == MissionKind.Potential)
                    {
                        if (GUILayout.Button("set preferred crew", RmmStyle.Instance.ButtonStyle, GUILayout.Width(200), GUILayout.Height(20)))
                        {
                            _routineControl.CrewSelection(RoutineArrivalMission.CrewSelection);
                        }
                    }
                    GUILayout.EndHorizontal();
                    GUILayout.Label("   ", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                }

                GUILayout.BeginHorizontal();
                GUILayout.Label("Docking Port:", RmmStyle.Instance.LabelStyle, GUILayout.Width(100));
                GUILayout.Label(strArrivalDockingPortName, RmmStyle.Instance.LabelStyle, GUILayout.Width(50));
                if (RoutineArrivalMission.Kind == MissionKind.Potential)
                {
                    if (GUILayout.Button("set docking port", RmmStyle.Instance.ButtonStyle, GUILayout.Width(150), GUILayout.Height(20)))
                    {
                        _routineControl.DockingPortSelection(RoutineArrivalMission.flightIdArrivalDockPart, this);
                    }
                }
                GUILayout.EndHorizontal();

                if (messages != null && messages.Count > 0)
                {
                    GUILayout.Label("", RmmStyle.Instance.LabelStyle, GUILayout.Width(300));
                    foreach (String message in messages)
                    {
                        GUILayout.Label(message, RmmStyle.Instance.LabelStyle, GUILayout.Width(300));
                    }
                }

                if (RoutineArrivalMission.Kind == MissionKind.Potential)
                {
                    if (GUILayout.Button("Order Launch", RmmStyle.Instance.ButtonStyle, GUILayout.Width(150), GUILayout.Height(22)))
                    {
                        CheckList checkList = _routineControl.OrderArrivalMissionAllowed();
                        if (checkList.CheckSucces)
                        {
                            _routineControl.OrderArrivalMission();
                            base.Close();
                        }
                        else
                        {
                            messages = checkList.Messages;
                        }
                    }
                }

                if (RoutineArrivalMission.Kind == MissionKind.Ordered)
                {
                    if (GUILayout.Button("Cancel Launch", RmmStyle.Instance.ButtonStyle, GUILayout.Width(150), GUILayout.Height(22)))
                    {
                        _routineControl.CancelArrivalMission();
                        base.Close();
                    }
                }
            }
        }