/// <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); } }
/// <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; }
/// <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); }
/// <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; }
/// <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(); }
/// <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); }
/// <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); }