public bool TransmitToKSC(ScienceData data) { List<ModuleDataTransmitter> transmitters = this.part.vessel.FindPartModulesImplementing<ModuleDataTransmitter>(); List<ScienceData> dataQueue = new List<ScienceData>(); ModuleDataTransmitter bestTransmitter = null; //Package up the data and put it in the queue. TransmitItem item = new TransmitItem(); item.science = data.dataAmount; item.reputation = 0f; item.funds = 0f; item.title = data.title; transmitList.Add(item); //Find an available transmitter. if found, transmit the data. dataQueue.Add(data); foreach (ModuleDataTransmitter transmitter in transmitters) { if (transmitter.IsBusy() == false) { if (bestTransmitter == null) bestTransmitter = transmitter; else if (transmitter.packetSize > bestTransmitter.packetSize) bestTransmitter = transmitter; } } if (bestTransmitter != null) { bestTransmitter.TransmitData(dataQueue, OnTransmitComplete); return true; } else { //Inform user that there is no available transmitter. ScreenMessages.PostScreenMessage(kNoAvailableTransmitter, 5.0f, ScreenMessageStyle.UPPER_CENTER); return false; } }
public bool TransmitToKSC(float science, float reputation, float funds, float dataAmount = -1f) { float transmitSize = dataAmount; List<ModuleDataTransmitter> transmitters = this.part.vessel.FindPartModulesImplementing<ModuleDataTransmitter>(); List<ScienceData> dataQueue = new List<ScienceData>(); ModuleDataTransmitter bestTransmitter = null; if (transmitSize == -1f) { if (science > 0f) transmitSize = science / 0.3f; else if (reputation > 0f) transmitSize = reputation / 0.3f; else transmitSize = funds / 0.3f; } else { transmitSize = dataAmount; } ScienceExperiment experiment = ResearchAndDevelopment.GetExperiment("crewReport"); ScienceSubject subject = ResearchAndDevelopment.GetExperimentSubject(experiment, ExperimentSituations.SrfLanded, FlightGlobals.GetHomeBody(), ""); ScienceData data = new ScienceData(transmitSize, 0f, 0, subject.id, ""); //Package up the data and put it in the queue. TransmitItem item = new TransmitItem(); item.science = science; item.reputation = reputation; item.funds = funds; transmitList.Add(item); //Find an available transmitter. if found, transmit the data. dataQueue.Add(data); foreach (ModuleDataTransmitter transmitter in transmitters) { if (transmitter.IsBusy() == false) { if (bestTransmitter == null) bestTransmitter = transmitter; else if (transmitter.packetSize > bestTransmitter.packetSize) bestTransmitter = transmitter; } } if (bestTransmitter != null) { bestTransmitter.TransmitData(dataQueue, OnTransmitComplete); return true; } else { //Inform user that there is no available transmitter. ScreenMessages.PostScreenMessage(kNoAvailableTransmitter, 5.0f, ScreenMessageStyle.UPPER_CENTER); return false; } }