public System.Collections.IEnumerator UpdateStatus() { while (true) { Log.Info(part.partInfo.title + "updateStatus"); double numEurekas = GetResourceAmount(EUREKAS); double numEurekasMax = GetResourceMaxAmount(EUREKAS); double numKuarqs = GetResourceAmount(KUARQS); double numKuarqsMax = GetResourceMaxAmount(KUARQS); double numBioproducts = GetResourceAmount(BIOPRODUCTS); int sciCount = GetScienceCount(); Log.Info(part.partInfo.title + " finished: " + Finished()); if (!Finished()) { Events["DeployExperiment"].active = false; Events["StartExperiment"].active = (!Inoperable && sciCount == 0 && numEurekasMax == 0 && numKuarqsMax == 0); } else { Events["DeployExperiment"].active = true; Events["StartExperiment"].active = false; } var subject = ScienceHelper.getScienceSubject(experimentID, vessel); string subjectId = ((subject == null) ? "" : subject.id); if (subjectId != "" && last_subjectId != "" && last_subjectId != subjectId && (numEurekas > 0 || numKuarqs > 0 || (numBioproducts > 0 && sciCount == 0))) { ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_StatSci_screen_locchange", part.partInfo.title), 6, ScreenMessageStyle.UPPER_CENTER); StopResearch(); StopResearch(BIOPRODUCTS); } last_subjectId = subjectId; if (sciCount > 0) { StopResearch(); if (completed == 0) { completed = (float)Planetarium.GetUniversalTime(); } } if (numEurekas > 0) { var eurekasModules = vessel.FindPartModulesImplementing <StationScienceModule>(); if (eurekasModules == null || eurekasModules.Count() < 1) { ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_StatSci_screen_detatch", part.partInfo.title), 2, ScreenMessageStyle.UPPER_CENTER); } } /* * if (numKuarqs > 0) * { * var kuarqModules = vessel.FindPartModulesImplementing<KuarqGenerator>(); * if (kuarqModules == null || kuarqModules.Count() < 1) * { * stopResearch(KUARQS); * } * } */ if (numBioproducts > 0 && Inoperable) { StopResearch(BIOPRODUCTS); } if (requirements.ContainsKey(BIOPRODUCTS) && GetScienceCount() > 0 && numBioproducts < requirements[BIOPRODUCTS].amount) //if (bioproductsRequired > 0 && GetScienceCount() > 0 && numBioproducts < bioproductsRequired) { ResetExperiment(); } #if false // make sure we keep updating while changes are possible if (currentStatus == Status.Running || currentStatus == Status.Completed || currentStatus == Status.BadLocation) { ReadyToDeploy(false); } #endif ScienceExperiment experiment = ResearchAndDevelopment.GetExperiment(experimentID); if (currentStatus == Status.Running && !experiment.IsAvailableWhile(GetScienceSituation(vessel), vessel.mainBody)) { ScreenMessages.PostScreenMessage(Localizer.Format("Can't perform experiment here."), 6, ScreenMessageStyle.UPPER_CENTER); currentStatus = Status.BadLocation; } yield return(new UnityEngine.WaitForSeconds(1f)); } }
public System.Collections.IEnumerator updateStatus() { while (true) { //print(part.partInfo.title + "updateStatus"); double numEurekas = getResourceAmount("Eurekas"); double numEurekasMax = getResourceMaxAmount("Eurekas"); double numKuarqs = getResourceAmount("Kuarqs"); double numKuarqsMax = getResourceMaxAmount("Kuarqs"); double numBioproducts = getResourceAmount("Bioproducts"); int sciCount = GetScienceCount(); //print(part.partInfo.title + " finished: " + finished()); if (!finished()) { Events["DeployExperiment"].active = false; Events["StartExperiment"].active = (!Inoperable && sciCount == 0 && numEurekasMax == 0 && numKuarqsMax == 0); } else { Events["DeployExperiment"].active = true; Events["StartExperiment"].active = false; } var subject = ScienceHelper.getScienceSubject(experimentID, vessel); string subjectId = ((subject == null) ? "" : subject.id); if (subjectId != "" && last_subjectId != "" && last_subjectId != subjectId && (numEurekas > 0 || numKuarqs > 0 || (numBioproducts > 0 && sciCount == 0))) { ScreenMessages.PostScreenMessage("Location changed mid-experiment! " + part.partInfo.title + " ruined.", 6, ScreenMessageStyle.UPPER_CENTER); stopResearch(); stopResearch("Bioproducts"); } last_subjectId = subjectId; if (sciCount > 0) { stopResearch(); if (completed == 0) { completed = (float)Planetarium.GetUniversalTime(); } } if (numEurekas > 0) { var eurekasModules = vessel.FindPartModulesImplementing <StationScienceModule>(); if (eurekasModules == null || eurekasModules.Count() < 1) { ScreenMessages.PostScreenMessage("Warning: " + part.partInfo.title + " has detached from the station without being finalized.", 2, ScreenMessageStyle.UPPER_CENTER); } } /* * if (numKuarqs > 0) * { * var kuarqModules = vessel.FindPartModulesImplementing<KuarqGenerator>(); * if (kuarqModules == null || kuarqModules.Count() < 1) * { * stopResearch("Kuarqs"); * } * } */ if (numBioproducts > 0 && Inoperable) { stopResearch("Bioproducts"); } if (bioproductsRequired > 0 && GetScienceCount() > 0 && numBioproducts < bioproductsRequired) { ResetExperiment(); } yield return(new UnityEngine.WaitForSeconds(1f)); } }