コード例 #1
0
        public override bool Pop(FlightComputer fc)
        {
            var activeHibCommand = HibernationCommand.findActiveHibernationCmd(fc);

            if (PowerMode == PowerModes.Hibernate && activeHibCommand == null) // no active hibernation
            {
                mStartHibernation = true;

                //get all activated antennas, except for probe cores' built-in comms
                AntennaIDs.Clear();
                AntennaIndices.Clear();
                var antennas = RTCore.Instance.Satellites[fc.Vessel.id].Antennas.ToList();
                for (int i = 0; i < antennas.Count; i++)
                {
                    if (antennas[i].Activated && !(antennas[i] is ModuleRTAntennaPassive))
                    {
                        var antenna = antennas[i] as PartModule;
                        AntennaIDs.Add(antenna.part.flightID);
                        AntennaIndices.Add(i);
                    }
                }

                return(true);
            }
            else if (PowerMode == PowerModes.Wake && activeHibCommand != null)
            {
                activeHibCommand.Abort();
                return(false);
            }

            return(false);
        }
コード例 #2
0
        public override bool Pop(FlightComputer fc)
        {
            this.vesselReference = fc.Vessel;

            var activeHibCommand = HibernationCommand.findActiveHibernationCmd(fc);

            if (activeHibCommand != null) //what to do with active hibernation cmd under this new hib cmd?
            {
                if (this.PowerMode == PowerModes.Wake)
                {
                    activeHibCommand.Abort();
                    return(false);
                }
                else if (this.PowerMode == PowerModes.Hibernate && activeHibCommand.PowerMode == PowerModes.AntennaSaver)
                {
                    activeHibCommand.Abort();
                }
                else if (this.PowerMode == PowerModes.Hibernate && activeHibCommand.PowerMode == PowerModes.Hibernate)
                {
                    return(false);
                }
                else if (this.PowerMode == PowerModes.AntennaSaver && activeHibCommand.PowerMode == PowerModes.Hibernate)
                {
                    activeHibCommand.Abort();
                }
                else if (this.PowerMode == PowerModes.AntennaSaver && activeHibCommand.PowerMode == PowerModes.AntennaSaver)
                {
                    return(false);
                }
            }

            if (PowerMode == PowerModes.Hibernate)
            {
                if (AntennaIDs.Count == 0)//no saved list found
                {
                    mStartHibernation = true;
                }

                return(true);
            }
            else if (PowerMode == PowerModes.AntennaSaver)
            {
                return(true);
            }

            return(false);
        }