private Rect DrawInfoPane(ConceptDef conc) { float knowledge = PlayerKnowledgeDatabase.GetKnowledge(conc); bool complete = PlayerKnowledgeDatabase.IsComplete(conc); bool drawProgressBar = !complete && knowledge > 0f; Text.Font = GameFont.Medium; float titleHeight = Text.CalcHeight(conc.LabelCap, 276f); Text.Font = GameFont.Small; float textHeight = Text.CalcHeight(conc.HelpTextAdjusted, 296f); float num = titleHeight + textHeight + 14f + 5f; if (selectedConcept == conc) { num += 40f; } if (drawProgressBar) { num += 30f; } Rect outRect = new Rect((float)UI.screenWidth - 8f - 200f - 8f - 310f, 8f, 310f, num); Rect result = outRect; Find.WindowStack.ImmediateWindow(987612111, outRect, WindowLayer.Super, delegate { outRect = outRect.AtZero(); Rect rect = outRect.ContractedBy(7f); Widgets.DrawShadowAround(outRect); Widgets.DrawWindowBackgroundTutor(outRect); Rect rect2 = rect; rect2.width -= 20f; rect2.height = titleHeight + 5f; Text.Font = GameFont.Medium; Widgets.Label(rect2, conc.LabelCap); Text.Font = GameFont.Small; Rect rect3 = rect; rect3.yMin = rect2.yMax; rect3.height = textHeight; Widgets.Label(rect3, conc.HelpTextAdjusted); if (drawProgressBar) { Rect rect4 = rect; rect4.yMin = rect3.yMax; rect4.height = 30f; Widgets.FillableBar(rect4, PlayerKnowledgeDatabase.GetKnowledge(conc), ProgressBarFillTex); } if (selectedConcept == conc) { if (Widgets.CloseButtonFor(outRect)) { selectedConcept = null; SoundDefOf.PageChange.PlayOneShotOnCamera(); } Rect rect5 = new Rect(rect.center.x - 70f, rect.yMax - 30f, 140f, 30f); if (!complete) { if (Widgets.ButtonText(rect5, "MarkLearned".Translate())) { selectedConcept = null; SoundDefOf.PageChange.PlayOneShotOnCamera(); PlayerKnowledgeDatabase.SetKnowledge(conc, 1f); } } else { GUI.color = new Color(1f, 1f, 1f, 0.5f); Text.Anchor = TextAnchor.MiddleCenter; Widgets.Label(rect5, "AlreadyLearned".Translate()); Text.Anchor = TextAnchor.UpperLeft; GUI.color = Color.white; } } }, doBackground: false); return result; }
public static void LessonAutoActivatorUpdate() { if (!TutorSystem.AdaptiveTrainingEnabled || Current.Game == null || Find.Tutor.learningReadout.ShowAllMode) { return; } LessonAutoActivator.timeSinceLastLesson += RealTime.realDeltaTime; if (Current.ProgramState == ProgramState.Playing && (Time.timeSinceLevelLoad < 8f || Find.WindowStack.SecondsSinceClosedGameStartDialog < 8f || Find.TickManager.NotPlaying)) { return; } for (int i = LessonAutoActivator.alertingConcepts.Count - 1; i >= 0; i--) { if (PlayerKnowledgeDatabase.IsComplete(LessonAutoActivator.alertingConcepts[i])) { LessonAutoActivator.alertingConcepts.RemoveAt(i); } } if (Time.frameCount % 15 == 0 && Find.ActiveLesson.Current == null) { for (int j = 0; j < DefDatabase <ConceptDef> .AllDefsListForReading.Count; j++) { ConceptDef conceptDef = DefDatabase <ConceptDef> .AllDefsListForReading[j]; if (!PlayerKnowledgeDatabase.IsComplete(conceptDef)) { float num = PlayerKnowledgeDatabase.GetKnowledge(conceptDef); num -= 0.00015f * Time.deltaTime * 15f; if (num < 0f) { num = 0f; } PlayerKnowledgeDatabase.SetKnowledge(conceptDef, num); if (conceptDef.opportunityDecays) { float num2 = LessonAutoActivator.GetOpportunity(conceptDef); num2 -= 0.4f * Time.deltaTime * 15f; if (num2 < 0f) { num2 = 0f; } LessonAutoActivator.opportunities[conceptDef] = num2; } } } if (Find.Tutor.learningReadout.ActiveConceptsCount < 3) { ConceptDef conceptDef2 = LessonAutoActivator.MostDesiredConcept(); if (conceptDef2 != null) { float desire = LessonAutoActivator.GetDesire(conceptDef2); if (desire > 0.1f && LessonAutoActivator.RelaxDesire < desire) { LessonAutoActivator.TryInitiateLesson(conceptDef2); } } } else { LessonAutoActivator.SetLastLessonTimeToNow(); } } }
public override void OnActivated() { PlayerKnowledgeDatabase.SetKnowledge(base.def.concept, 0f); base.OnActivated(); }
public static void LessonAutoActivatorUpdate() { if (!TutorSystem.AdaptiveTrainingEnabled || Current.Game == null || Find.Tutor.learningReadout.ShowAllMode) { return; } timeSinceLastLesson += RealTime.realDeltaTime; if (Current.ProgramState == ProgramState.Playing && (Time.timeSinceLevelLoad < 8f || Find.WindowStack.SecondsSinceClosedGameStartDialog < 8f || Find.TickManager.NotPlaying)) { return; } for (int num = alertingConcepts.Count - 1; num >= 0; num--) { if (PlayerKnowledgeDatabase.IsComplete(alertingConcepts[num])) { alertingConcepts.RemoveAt(num); } } if (Time.frameCount % 15 != 0 || Find.ActiveLesson.Current != null) { return; } for (int i = 0; i < DefDatabase <ConceptDef> .AllDefsListForReading.Count; i++) { ConceptDef conceptDef = DefDatabase <ConceptDef> .AllDefsListForReading[i]; if (PlayerKnowledgeDatabase.IsComplete(conceptDef)) { continue; } float knowledge = PlayerKnowledgeDatabase.GetKnowledge(conceptDef); knowledge -= 0.00015f * Time.deltaTime * 15f; if (knowledge < 0f) { knowledge = 0f; } PlayerKnowledgeDatabase.SetKnowledge(conceptDef, knowledge); if (conceptDef.opportunityDecays) { float opportunity = GetOpportunity(conceptDef); opportunity -= 0.4f * Time.deltaTime * 15f; if (opportunity < 0f) { opportunity = 0f; } opportunities[conceptDef] = opportunity; } } if (Find.Tutor.learningReadout.ActiveConceptsCount < 3) { ConceptDef conceptDef2 = MostDesiredConcept(); if (conceptDef2 != null) { float desire = GetDesire(conceptDef2); if (desire > 0.1f && RelaxDesire < desire) { TryInitiateLesson(conceptDef2); } } } else { SetLastLessonTimeToNow(); } }
public static void LessonAutoActivatorUpdate() { if (TutorSystem.AdaptiveTrainingEnabled && Current.Game != null && !Find.Tutor.learningReadout.ShowAllMode) { LessonAutoActivator.timeSinceLastLesson += RealTime.realDeltaTime; if (Current.ProgramState == ProgramState.Playing) { if (Time.timeSinceLevelLoad < 8.0) { return; } if (Find.WindowStack.SecondsSinceClosedGameStartDialog < 8.0) { return; } if (Find.TickManager.NotPlaying) { return; } } for (int num = LessonAutoActivator.alertingConcepts.Count - 1; num >= 0; num--) { if (PlayerKnowledgeDatabase.IsComplete(LessonAutoActivator.alertingConcepts[num])) { LessonAutoActivator.alertingConcepts.RemoveAt(num); } } if (Time.frameCount % 15 == 0 && Find.ActiveLesson.Current == null) { for (int i = 0; i < DefDatabase <ConceptDef> .AllDefsListForReading.Count; i++) { ConceptDef conceptDef = DefDatabase <ConceptDef> .AllDefsListForReading[i]; if (!PlayerKnowledgeDatabase.IsComplete(conceptDef)) { float knowledge = PlayerKnowledgeDatabase.GetKnowledge(conceptDef); knowledge = (float)(knowledge - 0.0001500000071246177 * Time.deltaTime * 15.0); if (knowledge < 0.0) { knowledge = 0f; } PlayerKnowledgeDatabase.SetKnowledge(conceptDef, knowledge); if (conceptDef.opportunityDecays) { float opportunity = LessonAutoActivator.GetOpportunity(conceptDef); opportunity = (float)(opportunity - 0.40000000596046448 * Time.deltaTime * 15.0); if (opportunity < 0.0) { opportunity = 0f; } LessonAutoActivator.opportunities[conceptDef] = opportunity; } } } if (Find.Tutor.learningReadout.ActiveConceptsCount < 3) { ConceptDef conceptDef2 = LessonAutoActivator.MostDesiredConcept(); if (conceptDef2 != null) { float desire = LessonAutoActivator.GetDesire(conceptDef2); if (desire > 0.10000000149011612 && LessonAutoActivator.RelaxDesire < desire) { LessonAutoActivator.TryInitiateLesson(conceptDef2); } } } else { LessonAutoActivator.SetLastLessonTimeToNow(); } } } }