private void spawnWarningDialog(ScienceRelayData data, string message) { warningDialog = PopupDialog.SpawnPopupDialog(new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new MultiOptionDialog( "ScienceRelayWarning", Localizer.Format("#autoLOC_6001489", message), Localizer.Format("#autoLOC_236416"), UISkinManager.defaultSkin, new Rect(0.5f, 0.5f, 250, 120), new DialogGUIBase[] { new DialogGUIButton <ScienceRelayData>( Localizer.Format("#autoLOC_6001430"), transferToVessel, data, true ), new DialogGUIButton(Localizer.Format("#autoLOC_190768"), null, true) }), false, UISkinManager.defaultSkin, true, ""); }
private void onTriggeredData(ScienceData data, Vessel vessel, bool aborted) { if (vessel == null) { return; } if (vessel != FlightGlobals.ActiveVessel) { return; } if (data == null) { return; } for (int i = queuedData.Count - 1; i >= 0; i--) { ScienceRelayData d = queuedData[i]; if (d._data.subjectID != data.subjectID) { continue; } if (aborted) { data.triggered = false; return; } if (!finishTransfer(d._target, d._data, d._boost)) { Part host = d._host; List <IScienceDataContainer> containers = host.FindModulesImplementing <IScienceDataContainer>(); IScienceDataContainer hostContainer = null; for (int j = containers.Count - 1; j >= 0; j--) { IScienceDataContainer container = containers[j]; if (container == null) { continue; } PartModule mod = container as PartModule; if (mod.part == null) { continue; } if (mod.part.flightID != data.container) { continue; } hostContainer = container; break; } if (hostContainer != null) { data.triggered = false; hostContainer.ReturnData(data); } } else { ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_238419", new string[] { d._target.vesselName, data.dataAmount.ToString("F0"), data.title }), 4, ScreenMessageStyle.UPPER_LEFT); } queuedData.Remove(d); break; } }
private void transferToVessel(ScienceRelayData RelayData) { if (resultsDialog != null) { resultsDialog.Dismiss(); } if (RelayData._host == null || RelayData._data == null || RelayData._target == null || RelayData._source == null) { return; } List <ScienceRelayData> data = new List <ScienceRelayData>(); if (transferAll) { for (int i = resultsDialog.pages.Count - 1; i >= 0; i--) { ExperimentResultDialogPage page = resultsDialog.pages[i]; if (page == null) { continue; } if (page.pageData == null) { continue; } if (page.host == null) { continue; } ScienceRelayData relayData = new ScienceRelayData() { _data = page.pageData, _host = page.host, _boost = signalBoost(RelayData._boost + 1, RelayData._target, page.pageData, page.xmitDataScalar), _target = RelayData._target, _source = RelayData._source, }; relayData._data.baseTransmitValue = page.xmitDataScalar; data.Add(relayData); } } else { RelayData._data.baseTransmitValue = currentPage.xmitDataScalar; data.Add(RelayData); } for (int i = data.Count - 1; i >= 0; i--) { ScienceData d = data[i]._data; Part host = data[i]._host; List <IScienceDataContainer> containers = host.FindModulesImplementing <IScienceDataContainer>(); IScienceDataContainer hostContainer = null; for (int j = containers.Count - 1; j >= 0; j--) { hostContainer = null; IScienceDataContainer container = containers[j]; if (container == null) { continue; } ScienceData[] containerData = container.GetData(); for (int k = containerData.Length - 1; k >= 0; k--) { ScienceData dat = containerData[k]; if (dat.subjectID == d.subjectID) { hostContainer = container; break; } } if (hostContainer != null) { break; } } IScienceDataTransmitter bestTransmitter = ScienceUtil.GetBestTransmitter(RelayData._source.FindPartModulesImplementing <IScienceDataTransmitter>()); if (bestTransmitter == null) { if (CommNetScenario.CommNetEnabled) { ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_238505"), 3, ScreenMessageStyle.UPPER_CENTER); } else { ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_238507"), 3, ScreenMessageStyle.UPPER_CENTER); } } else { d.triggered = true; bestTransmitter.TransmitData(new List <ScienceData> { d }); queuedData.Add(data[i]); if (hostContainer != null) { hostContainer.DumpData(d); } } } }