/// <summary>
        /// Change the selected destination vessel.
        /// </summary>
        /// <param name="newVesselIndex"></param>
        protected void UpdateDestinationVessel(int newVesselIndex)
        {
            _errorMessageText = string.Empty;

            _selectedResource           = null;
            _destinationVesselIndex     = newVesselIndex;
            _destinationVessel          = _module.BodyVesselList[_destinationVesselIndex];
            _destinationVesselResources = _destinationVessel.GetResources();

            if (_originVessel != null)
            {
                if (_transfer == null)
                {
                    _transfer = new OrbitalLogisticsTransferRequest(_originVessel, _destinationVessel);
                }
                else
                {
                    _transfer.Destination = _destinationVessel;
                    _transfer.ResourceRequests.Clear();
                }

                _transfer.CalculateDuration();

                _transferrableResources = OrbitalLogisticsAllowedTransfers.Instance.GetAllowedResources(_originVessel, _destinationVessel);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates <see cref="OrbitalLogisticsTransferRequest"/> instances from game save file.
        /// </summary>
        /// <remarks>Implementation of <see cref="ScenarioModule.OnLoad(ConfigNode)"/>.</remarks>
        /// <param name="node"></param>
        public override void OnLoad(ConfigNode node)
        {
            base.OnLoad(node);

            ConfigNode.LoadObjectFromConfig(this, node);

            PendingTransfers.Clear();
            ExpiredTransfers.Clear();

            OrbitalLogisticsTransferRequest transfer;

            foreach (ConfigNode subNode in node.nodes)
            {
                transfer = new OrbitalLogisticsTransferRequest();
                transfer.Load(subNode);

                if (transfer.Status == DeliveryStatus.Launched || transfer.Status == DeliveryStatus.Returning)
                {
                    PendingTransfers.Add(transfer);
                }
                else
                {
                    ExpiredTransfers.Add(transfer);
                }
            }

            // Sort transfers by arrival time
            PendingTransfers.Sort();
            ExpiredTransfers.Sort();

            _isLoaded = true;
        }
Exemplo n.º 3
0
 /// <summary>
 /// Resume the transfer.
 /// </summary>
 /// <param name="transfer"></param>
 public void ResumeTransfer(OrbitalLogisticsTransferRequest transfer)
 {
     if (PendingTransfers.Contains(transfer))
     {
         PendingTransfers.Remove(transfer);
         transfer.Launch(PendingTransfers);
     }
 }
        /// <summary>
        /// Clear the cache and close the window.
        /// </summary>
        protected void ResetAndClose()
        {
            _transfer          = null;
            _selectedResource  = null;
            _originVessel      = null;
            _destinationVessel = null;
            _errorMessageText  = string.Empty;

            SetVisible(false);
        }
Exemplo n.º 5
0
 /// <summary>
 /// Abort the transfer and remove from transfer list.
 /// </summary>
 /// <param name="transfer"></param>
 public void AbortTransfer(OrbitalLogisticsTransferRequest transfer)
 {
     if (ExpiredTransfers.Contains(transfer))
     {
         ExpiredTransfers.Remove(transfer);
     }
     if (PendingTransfers.Contains(transfer))
     {
         transfer.Abort();
     }
 }
 public OrbitalLogisticsGui_ReviewTransfer(OrbitalLogisticsTransferRequest transfer, ITransferRequestViewParent parentWindow)
     : base("Transfer Details", 200, 460)
 {
     Transfer      = transfer;
     _parentWindow = parentWindow;
 }
Exemplo n.º 7
0
        /// <summary>
        /// Called by <see cref="KolonizationMonitor"/> to render the UI.
        /// </summary>
        public void DrawWindow()
        {
            if (!_isVisible)
            {
                return;
            }

            // Declare some temporary variables
            GUIStyle labelStyle;
            OrbitalLogisticsTransferRequest transfer;

            OrbitalLogisticsTransferRequest[] pendingTransfers = _scenario.PendingTransfers.ToArray();
            OrbitalLogisticsTransferRequest[] expiredTransfers = _scenario.ExpiredTransfers.ToArray();

            // Display everything inside a scroll view
            _scrollPosition = GUILayout.BeginScrollView(_scrollPosition, UIHelper.scrollStyle, GUILayout.Width(680), GUILayout.Height(380));
            GUILayout.BeginVertical();

            // Display pending transfer section header
            GUILayout.BeginHorizontal();
            GUILayout.Label("Pending Transfers", UIHelper.labelStyle, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            GUILayout.BeginVertical();

            if (pendingTransfers.Length == 0)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Label("None", UIHelper.whiteLabelStyle, GUILayout.Width(160));
                GUILayout.EndHorizontal();
            }
            else
            {
                // Display pending transfer column headers
                GUILayout.BeginHorizontal();
                GUILayout.Label(string.Empty, UIHelper.labelStyle, GUILayout.Width(25));
                GUILayout.Label(" Origin", UIHelper.whiteLabelStyle, GUILayout.Width(165));
                GUILayout.Label("Destination", UIHelper.whiteLabelStyle, GUILayout.Width(165));
                GUILayout.Label("Cost", UIHelper.whiteLabelStyle, GUILayout.Width(80));
                GUILayout.Label("Mass", UIHelper.whiteLabelStyle, GUILayout.Width(80));
                GUILayout.Label("Arrival Time", UIHelper.whiteLabelStyle, GUILayout.Width(90));
                GUILayout.EndHorizontal();

                // Display pending transfers
                for (int i = 0; i < pendingTransfers.Length; i++)
                {
                    transfer = pendingTransfers[i];

                    // Determine text color based on transfer status
                    if (transfer.Status == DeliveryStatus.Returning)
                    {
                        labelStyle = UIHelper.redLabelStyle;
                    }
                    else
                    {
                        labelStyle = UIHelper.yellowLabelStyle;
                    }

                    GUILayout.BeginHorizontal();
                    if (GUILayout.Button(UIHelper.rightArrowSymbol, UIHelper.buttonStyle, GUILayout.Width(25), GUILayout.Height(22)))
                    {
                        _selectedTransfer = transfer;

                        if (ReviewTransferGui == null)
                        {
                            ReviewTransferGui = new OrbitalLogisticsGui_ReviewTransfer(_selectedTransfer, this);
                        }
                        else
                        {
                            ReviewTransferGui.Transfer = _selectedTransfer;
                        }

                        ReviewTransferGui.SetVisible(true);
                    }
                    GUILayout.Label(" " + transfer.OriginVesselName ?? "(Missing)", labelStyle, GUILayout.Width(165));
                    GUILayout.Label(transfer.DestinationVesselName ?? "(Missing)", labelStyle, GUILayout.Width(165));
                    GUILayout.Label(transfer.CalculateFuelUnits().ToString("F2"), labelStyle, GUILayout.Width(80));
                    GUILayout.Label(transfer.TotalMass().ToString("F2"), labelStyle, GUILayout.Width(80));
                    GUILayout.Label(
                        Utilities.FormatTime(transfer.GetArrivalTime() - Planetarium.GetUniversalTime()),
                        labelStyle, GUILayout.Width(90)
                        );
                    if (GUILayout.Button(UIHelper.deleteSymbol, UIHelper.buttonStyle, GUILayout.Width(22), GUILayout.Height(22)))
                    {
                        _selectedTransfer = null;

                        if (ReviewTransferGui != null)
                        {
                            ReviewTransferGui.Transfer = null;
                            ReviewTransferGui.SetVisible(false);
                        }

                        // Cancel transfer
                        AbortTransfer(transfer);
                    }
                    GUILayout.EndHorizontal();
                }
            }

            GUILayout.EndVertical();

            // Display a blank section to create some visual separation between sections
            GUILayout.BeginHorizontal();
            GUILayout.Label(string.Empty, UIHelper.labelStyle, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            // Display expired transfer section header
            GUILayout.BeginHorizontal();
            GUILayout.Label("Expired Transfers", UIHelper.labelStyle, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            GUILayout.BeginVertical();

            if (expiredTransfers.Length == 0)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Label("None", UIHelper.whiteLabelStyle, GUILayout.Width(160));
                GUILayout.EndHorizontal();
            }
            else
            {
                // Display expired transfer column headers
                GUILayout.BeginHorizontal();
                GUILayout.Label(string.Empty, UIHelper.labelStyle, GUILayout.Width(25));
                GUILayout.Label(" Origin", UIHelper.whiteLabelStyle, GUILayout.Width(165));
                GUILayout.Label("Destination", UIHelper.whiteLabelStyle, GUILayout.Width(165));
                GUILayout.Label("Cost", UIHelper.whiteLabelStyle, GUILayout.Width(80));
                GUILayout.Label("Mass", UIHelper.whiteLabelStyle, GUILayout.Width(80));
                GUILayout.Label("Status", UIHelper.whiteLabelStyle, GUILayout.Width(90));
                GUILayout.EndHorizontal();

                // Diplay expired transfers
                for (int i = 0; i < expiredTransfers.Length; i++)
                {
                    transfer = expiredTransfers[i];

                    // Determine text color based on transfer status
                    if (transfer.Status == DeliveryStatus.Delivered)
                    {
                        labelStyle = UIHelper.yellowLabelStyle;
                    }
                    else
                    {
                        labelStyle = UIHelper.redLabelStyle;
                    }

                    GUILayout.BeginHorizontal();
                    if (GUILayout.Button(UIHelper.rightArrowSymbol, UIHelper.buttonStyle, GUILayout.Width(25), GUILayout.Height(22)))
                    {
                        _selectedTransfer = transfer;

                        if (ReviewTransferGui == null)
                        {
                            ReviewTransferGui = new OrbitalLogisticsGui_ReviewTransfer(_selectedTransfer, this);
                        }
                        else
                        {
                            ReviewTransferGui.Transfer = _selectedTransfer;
                        }

                        ReviewTransferGui.SetVisible(true);
                    }
                    GUILayout.Label(" " + transfer.OriginVesselName ?? "(Missing)", labelStyle, GUILayout.Width(165));
                    GUILayout.Label(transfer.DestinationVesselName ?? "(Missing)", labelStyle, GUILayout.Width(165));
                    GUILayout.Label(transfer.CalculateFuelUnits().ToString("F2"), labelStyle, GUILayout.Width(80));
                    GUILayout.Label(transfer.TotalMass().ToString("F2"), labelStyle, GUILayout.Width(80));
                    GUILayout.Label(transfer.Status.ToString(), labelStyle, GUILayout.Width(90));
                    if (GUILayout.Button(UIHelper.deleteSymbol, UIHelper.buttonStyle, GUILayout.Width(22), GUILayout.Height(22)))
                    {
                        _selectedTransfer = null;

                        if (ReviewTransferGui != null)
                        {
                            ReviewTransferGui.Transfer = null;
                            ReviewTransferGui.SetVisible(false);
                        }

                        // Remove transfer from expired transfers list
                        _scenario.ExpiredTransfers.Remove(transfer);
                    }
                    GUILayout.EndHorizontal();
                }

                // Display a blank line to create some visual separation
                GUILayout.BeginHorizontal();
                GUILayout.Label(string.Empty, UIHelper.labelStyle, GUILayout.Width(200));
                GUILayout.EndHorizontal();

                // Display clear all expired transfers button
                GUILayout.BeginHorizontal();
                GUILayout.Label(string.Empty, UIHelper.labelStyle, GUILayout.Width(300));
                if (GUILayout.Button("Clear All", UIHelper.buttonStyle, GUILayout.Width(80), GUILayout.Height(25)))
                {
                    _selectedTransfer = null;

                    if (ReviewTransferGui != null)
                    {
                        ReviewTransferGui.Transfer = null;
                        ReviewTransferGui.SetVisible(false);
                    }

                    // Remove all transfers from expired transfers list
                    _scenario.ExpiredTransfers.Clear();
                }
                GUILayout.EndHorizontal();
            }
            GUILayout.EndVertical();

            // Close main scroll view
            GUILayout.EndVertical();
            GUILayout.EndScrollView();
        }
Exemplo n.º 8
0
 /// <summary>
 /// Resumes a cancelled transfer via <see cref="ScenarioOrbitalLogistics"/>.
 /// </summary>
 /// <remarks>
 /// Implementation of <see cref="ITransferRequestViewParent.ResumeTransfer(OrbitalLogisticsTransferRequest)"/>.
 /// </remarks>
 /// <param name="transfer"></param>
 public void ResumeTransfer(OrbitalLogisticsTransferRequest transfer)
 {
     _scenario.ResumeTransfer(transfer);
 }
Exemplo n.º 9
0
 /// <summary>
 /// Aborts a transfer via <see cref="ScenarioOrbitalLogistics"/>.
 /// </summary>
 /// <remarks>
 /// Implementation of <see cref="ITransferRequestViewParent.AbortTransfer(OrbitalLogisticsTransferRequest)"/>.
 /// </remarks>
 /// <param name="transfer"></param>
 public void AbortTransfer(OrbitalLogisticsTransferRequest transfer)
 {
     _scenario.AbortTransfer(transfer);
 }