示例#1
0
        public SatelliteDefinition(SatelliteBase satellite, SimulationParams simulationParameters, SatelliteGroup group)
        {
            id                        = satellite.Id;
            index                     = id - 1;
            constellationType         = satellite.ConstellationType;
            this.simulationParameters = simulationParameters;
            this.group                = group;
            IEnumerable <SignalType> source = from s in simulationParameters.Signals
                                              where s.ConstellationType == constellationType
                                              select s.SignalType;

            firstSignalType = source.FirstOrDefault((SignalType st) => simulationParameters.SignalLevels.ContainsKey(st));
            if (simulationParameters.SignalLevelMode == SignalLevelMode.Manual && firstSignalType != SignalType.None)
            {
                Level = simulationParameters.SignalLevels[firstSignalType][index];
            }
        }
示例#2
0
        private void UpdateVisibleSatellites()
        {
            IEnumerable <SatelliteBase> source = simulation.VisibleSats[constellation.ConstellationType];

            foreach (SatelliteBase item in from s in source
                     where !(from ss in Satellites
                             select ss.Id).Contains(s.Id)
                     select s)
            {
                SatelliteDefinition satelliteDefinition = new SatelliteDefinition(item, simulation.SimulationParameters, this);
                int i;
                for (i = 0; i < Satellites.Count && item.Id > Satellites[i].Id; i++)
                {
                }
                Satellites.Insert(i, satelliteDefinition);
                satelliteDefinition.PropertyChanged += OnSatellite_PropertyChanged;
            }
            SatelliteDefinition[] array = Satellites.ToArray();
            foreach (SatelliteDefinition satDef in array)
            {
                SatelliteBase satelliteBase = source.FirstOrDefault((SatelliteBase s) => s.Id == satDef.Id);
                if (satelliteBase != null)
                {
                    if (simulation.SimulationParameters.SatCountLimitMode != 0)
                    {
                        satDef.IsEnabled = satelliteBase.IsEnabled;
                    }
                }
                else
                {
                    satDef.PropertyChanged -= OnSatellite_PropertyChanged;
                    Satellites.Remove(satDef);
                }
            }
            SatelliteCount = (constellation.IsEnabled ? (from s in Satellites
                                                         where s.IsEnabled
                                                         select s).Count() : 0);
        }