public void ArrivalTerminalSelected(ArrivalMetadata terminal) { _selectedTerminal = terminal; if (_selectedTerminal == null) { ShowWarning(_arrivalWarnings.NoTerminalSelectedMessage, true); } else { CheckBerths(); ClearWarning(_arrivalWarnings.NoTerminalSelectedMessage); } }
private List <ArrivalMetadata> GetNearbyTerminals() { var activeVessel = FlightGlobals.ActiveVessel; if (activeVessel == null) { return(null); } // Make sure we have an eligible terminal nearby var landedSituations = Vessel.Situations.LANDED | Vessel.Situations.PRELAUNCH | Vessel.Situations.SPLASHED; var landedOnly = (activeVessel.situation & landedSituations) == landedSituations; var terminalModules = LogisticsTools.GetNearbyPartModules <WOLF_TerminalModule>( TERMINAL_RANGE, activeVessel, true, landedOnly); if (terminalModules == null || terminalModules.Count < 1) { return(null); } var terminalIds = terminalModules .Where(t => !string.IsNullOrEmpty(t.TerminalId)) .Select(t => t.TerminalId); var wolfTerminals = _wolf.GetTerminals() .Where(t => terminalIds.Contains(t.Id) && t.Body == _selectedFlight.DestinationBody && t.Biome == _selectedFlight.DestinationBiome) .ToList(); var terminals = new List <ArrivalMetadata>(); foreach (var wolfTerminal in wolfTerminals) { var terminalModule = terminalModules .FirstOrDefault(t => t.TerminalId == wolfTerminal.Id); var terminal = new ArrivalMetadata { OccupiedSeats = terminalModule.part.protoModuleCrew.Count, TotalSeats = terminalModule.part.CrewCapacity, TerminalId = terminalModule.TerminalId, VesselName = terminalModule.vessel.GetDisplayName(), VesselId = terminalModule.vessel.id, }; terminals.Add(terminal); } if (_passengers != null && _passengers.Count > 0 && _selectedTerminal != null) { foreach (var terminal in terminals) { if (terminal.TerminalId == _selectedTerminal.TerminalId) { terminal.OccupiedSeats += _passengers.Count; } } } return(terminals .OrderBy(t => t.VesselName) .ThenBy(t => t.TerminalId) .ToList()); }