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