public static void ResearchFinishAllSRTS(ResearchManager __instance, ref Dictionary<ResearchProjectDef, float> ___progress) { foreach (ResearchProjectDef researchProjectDef in SRTSHelper.srtsDefProjects.Values) { ___progress[researchProjectDef] = SRTSHelper.GetResearchStat(researchProjectDef); } __instance.ReapplyAllMods(); }
public void FinalizeInit() { LogSimple.FlushToFileAndOpen(); researchManager.ReapplyAllMods(); MessagesRepeatAvoider.Reset(); GameComponentUtility.FinalizeInit(); Current.ProgramState = ProgramState.Playing; }
public void ResearchPerformed(float amount, Pawn researcher) { // get research manager instance ResearchManager manager = Find.ResearchManager; if (manager.currentProj == null) { Log.Error("Researched without having an active project."); return; } amount *= GlobalProgressFactor; if (researcher != null && researcher.Faction != null) { amount /= manager.currentProj.CostFactor(researcher.Faction.def.techLevel); } if (DebugSettings.fastResearch) { amount *= 500f; } researcher?.records.AddTo(RecordDefOf.ResearchPointsResearched, amount); Dictionary <ResearchProjectDef, float> progress = Progress; progress[manager.currentProj] = manager.GetProgress(manager.currentProj) + amount; // if not finished we're done if (!manager.currentProj.IsFinished) { return; } // otherwise, do some additional stuff; manager.ReapplyAllMods(); // remove current from queue ResearchNode completed = Queue.Pop; if (researcher != null) { TaleRecorder.RecordTale(TaleDefOf.FinishedResearchProject, researcher, completed.Research); } // message string label = "ResearchFinished".Translate(completed.Research.LabelCap); string text = "ResearchFinished".Translate(completed.Research.LabelCap) + "\n\n" + completed.Research.DescriptionDiscovered; // if there's something on the queue start it, and push an appropriate message ResearchNode next; if (Queue.TryStartNext(out next)) { text += "\n\n" + "NextInQueue".Translate(next.Research.LabelCap); Find.LetterStack.ReceiveLetter(label, text, LetterType.Good); } else { text += "\n\n" + "NextInQueue".Translate("none".Translate()); Find.LetterStack.ReceiveLetter(label, text, LetterType.BadNonUrgent); } }