public static void LessonAutoActivatorUpdate() { if (TutorSystem.AdaptiveTrainingEnabled && Current.Game != null && !Find.Tutor.learningReadout.ShowAllMode) { timeSinceLastLesson += RealTime.realDeltaTime; if (Current.ProgramState != ProgramState.Playing || (!(Time.timeSinceLevelLoad < 8f) && !(Find.WindowStack.SecondsSinceClosedGameStartDialog < 8f) && !Find.TickManager.NotPlaying)) { 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) { 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 -= 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 string DebugString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("RelaxDesire: " + LessonAutoActivator.RelaxDesire); foreach (ConceptDef current in DefDatabase <ConceptDef> .AllDefs.OrderByDescending(new Func <ConceptDef, float>(LessonAutoActivator.GetDesire))) { if (PlayerKnowledgeDatabase.IsComplete(current)) { stringBuilder.AppendLine(current.defName + " complete"); } else { stringBuilder.AppendLine(string.Concat(new string[] { current.defName, "\n know ", PlayerKnowledgeDatabase.GetKnowledge(current).ToString("F3"), "\n need ", LessonAutoActivator.opportunities[current].ToString("F3"), "\n des ", LessonAutoActivator.GetDesire(current).ToString("F3") })); } } return(stringBuilder.ToString()); }
private static float GetDesire(ConceptDef conc) { float result; if (PlayerKnowledgeDatabase.IsComplete(conc)) { result = 0f; } else if (Find.Tutor.learningReadout.IsActive(conc)) { result = 0f; } else if (Current.ProgramState != conc.gameMode) { result = 0f; } else if (conc.needsOpportunity && LessonAutoActivator.GetOpportunity(conc) < 0.1f) { result = 0f; } else { float num = 0f; num += conc.priority; num += LessonAutoActivator.GetOpportunity(conc) / 100f * 60f; num *= 1f - PlayerKnowledgeDatabase.GetKnowledge(conc); result = num; } return(result); }
private static ConceptDef MostDesiredConcept() { float num = -9999f; ConceptDef result = null; List <ConceptDef> allDefsListForReading = DefDatabase <ConceptDef> .AllDefsListForReading; int i = 0; while (i < allDefsListForReading.Count) { ConceptDef conceptDef = allDefsListForReading[i]; float desire = LessonAutoActivator.GetDesire(conceptDef); if (desire > num) { if (!conceptDef.needsOpportunity || LessonAutoActivator.GetOpportunity(conceptDef) >= 0.1f) { if (PlayerKnowledgeDatabase.GetKnowledge(conceptDef) <= 0.15f) { num = desire; result = conceptDef; } } } IL_72: i++; continue; goto IL_72; } return(result); }
public static string DebugString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("RelaxDesire: " + LessonAutoActivator.RelaxDesire); foreach (ConceptDef conceptDef in from co in DefDatabase <ConceptDef> .AllDefs orderby LessonAutoActivator.GetDesire(co) descending select co) { if (PlayerKnowledgeDatabase.IsComplete(conceptDef)) { stringBuilder.AppendLine(conceptDef.defName + " complete"); } else { stringBuilder.AppendLine(string.Concat(new string[] { conceptDef.defName, "\n know ", PlayerKnowledgeDatabase.GetKnowledge(conceptDef).ToString("F3"), "\n need ", LessonAutoActivator.opportunities[conceptDef].ToString("F3"), "\n des ", LessonAutoActivator.GetDesire(conceptDef).ToString("F3") })); } } return(stringBuilder.ToString()); }
public override void Notify_KnowledgeDemonstrated(ConceptDef conc) { if (def == conc && PlayerKnowledgeDatabase.GetKnowledge(conc) > 0.2f && !Expiring) { expiryTime = Time.timeSinceLevelLoad + 2.1f; } }
public static string DebugString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("RelaxDesire: " + LessonAutoActivator.RelaxDesire); IEnumerable <ConceptDef> allDefs = DefDatabase <ConceptDef> .AllDefs; if (LessonAutoActivator.< > f__mg$cache0 == null) { LessonAutoActivator.< > f__mg$cache0 = new Func <ConceptDef, float>(LessonAutoActivator.GetDesire); } foreach (ConceptDef conceptDef in allDefs.OrderByDescending(LessonAutoActivator.< > f__mg$cache0)) { if (PlayerKnowledgeDatabase.IsComplete(conceptDef)) { stringBuilder.AppendLine(conceptDef.defName + " complete"); } else { stringBuilder.AppendLine(string.Concat(new string[] { conceptDef.defName, "\n know ", PlayerKnowledgeDatabase.GetKnowledge(conceptDef).ToString("F3"), "\n need ", LessonAutoActivator.opportunities[conceptDef].ToString("F3"), "\n des ", LessonAutoActivator.GetDesire(conceptDef).ToString("F3") })); } } return(stringBuilder.ToString()); }
public override void Notify_KnowledgeDemonstrated(ConceptDef conc) { if (this.def == conc && PlayerKnowledgeDatabase.GetKnowledge(conc) > 0.20000000298023224 && !this.Expiring) { this.expiryTime = (float)(Time.timeSinceLevelLoad + 2.0999999046325684); } }
private Rect DrawConceptListRow(float x, float y, float width, ConceptDef conc) { float knowledge = PlayerKnowledgeDatabase.GetKnowledge(conc); bool flag = PlayerKnowledgeDatabase.IsComplete(conc); bool flag2 = !flag && knowledge > 0f; float num = Text.CalcHeight(conc.LabelCap, width); if (flag2) { num = num; } Rect rect = new Rect(x, y, width, num); if (flag2) { Rect rect2 = new Rect(rect); rect2.yMin += 1f; rect2.yMax -= 1f; Widgets.FillableBar(rect2, PlayerKnowledgeDatabase.GetKnowledge(conc), LearningReadout.ProgressBarFillTex, LearningReadout.ProgressBarBGTex, false); } if (flag) { GUI.DrawTexture(rect, BaseContent.GreyTex); } if (this.selectedConcept == conc) { GUI.DrawTexture(rect, TexUI.HighlightSelectedTex); } Widgets.DrawHighlightIfMouseover(rect); if (this.MatchesSearchString(conc)) { Widgets.DrawHighlight(rect); } Widgets.Label(rect, conc.LabelCap); if (Mouse.IsOver(rect) && this.selectedConcept == null) { this.mouseoverConcept = conc; } if (Widgets.ButtonInvisible(rect, true)) { if (this.selectedConcept == conc) { this.selectedConcept = null; } else { this.selectedConcept = conc; } SoundDefOf.PageChange.PlayOneShotOnCamera(null); } return(rect); }
public static void KnowledgeDemonstrated(ConceptDef conc, KnowledgeAmount know) { float num; switch (know) { case KnowledgeAmount.FrameDisplayed: num = ((Event.current.type != EventType.Repaint) ? 0f : 0.004f); break; case KnowledgeAmount.FrameInteraction: num = 0.008f; break; case KnowledgeAmount.TinyInteraction: num = 0.03f; break; case KnowledgeAmount.SmallInteraction: num = 0.1f; break; case KnowledgeAmount.SpecificInteraction: num = 0.4f; break; case KnowledgeAmount.Total: num = 1f; break; case KnowledgeAmount.NoteClosed: num = 0.5f; break; case KnowledgeAmount.NoteTaught: num = 1f; break; default: throw new NotImplementedException(); } if (num <= 0f) { return; } PlayerKnowledgeDatabase.SetKnowledge(conc, PlayerKnowledgeDatabase.GetKnowledge(conc) + num); LessonAutoActivator.Notify_KnowledgeDemonstrated(conc); if (Find.ActiveLesson != null) { Find.ActiveLesson.Notify_KnowledgeDemonstrated(conc); } }
private Rect DrawConceptListRow(float x, float y, float width, ConceptDef conc) { float knowledge = PlayerKnowledgeDatabase.GetKnowledge(conc); bool num = PlayerKnowledgeDatabase.IsComplete(conc); bool num2 = !num && knowledge > 0f; float num3 = Text.CalcHeight(conc.LabelCap, width); if (num2) { num3 += 0f; } Rect rect = new Rect(x, y, width, num3); if (num2) { Rect rect2 = new Rect(rect); rect2.yMin += 1f; rect2.yMax -= 1f; Widgets.FillableBar(rect2, PlayerKnowledgeDatabase.GetKnowledge(conc), ProgressBarFillTex, ProgressBarBGTex, doBorder: false); } if (num) { GUI.DrawTexture(rect, BaseContent.GreyTex); } if (selectedConcept == conc) { GUI.DrawTexture(rect, TexUI.HighlightSelectedTex); } Widgets.DrawHighlightIfMouseover(rect); if (MatchesSearchString(conc)) { Widgets.DrawHighlight(rect); } Widgets.Label(rect, conc.LabelCap); if (Mouse.IsOver(rect) && selectedConcept == null) { mouseoverConcept = conc; } if (Widgets.ButtonInvisible(rect)) { if (selectedConcept == conc) { selectedConcept = null; } else { selectedConcept = conc; } SoundDefOf.PageChange.PlayOneShotOnCamera(); } return rect; }
public static string DebugString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("RelaxDesire: " + RelaxDesire); foreach (ConceptDef item in DefDatabase <ConceptDef> .AllDefs.OrderByDescending((ConceptDef co) => GetDesire(co))) { if (PlayerKnowledgeDatabase.IsComplete(item)) { stringBuilder.AppendLine(item.defName + " complete"); continue; } stringBuilder.AppendLine(item.defName + "\n know " + PlayerKnowledgeDatabase.GetKnowledge(item).ToString("F3") + "\n need " + opportunities[item].ToString("F3") + "\n des " + GetDesire(item).ToString("F3")); } return(stringBuilder.ToString()); }
public static string DebugString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("RelaxDesire: " + LessonAutoActivator.RelaxDesire); foreach (ConceptDef item in DefDatabase <ConceptDef> .AllDefs.OrderByDescending(LessonAutoActivator.GetDesire)) { if (PlayerKnowledgeDatabase.IsComplete(item)) { stringBuilder.AppendLine(item.defName + " complete"); } else { stringBuilder.AppendLine(item.defName + "\n know " + PlayerKnowledgeDatabase.GetKnowledge(item).ToString("F3") + "\n need " + LessonAutoActivator.opportunities[item].ToString("F3") + "\n des " + LessonAutoActivator.GetDesire(item).ToString("F3")); } } return(stringBuilder.ToString()); }
private static float GetDesire(ConceptDef conc) { if (PlayerKnowledgeDatabase.IsComplete(conc)) { return(0f); } if (Find.Tutor.learningReadout.IsActive(conc)) { return(0f); } if (Current.ProgramState != conc.gameMode) { return(0f); } if (conc.needsOpportunity && GetOpportunity(conc) < 0.1f) { return(0f); } return((0f + conc.priority + GetOpportunity(conc) / 100f * 60f) * (1f - PlayerKnowledgeDatabase.GetKnowledge(conc))); }
private static float GetDesire(ConceptDef conc) { if (PlayerKnowledgeDatabase.IsComplete(conc)) { return(0f); } if (Find.Tutor.learningReadout.IsActive(conc)) { return(0f); } if (Current.ProgramState != conc.gameMode) { return(0f); } if (conc.needsOpportunity && LessonAutoActivator.GetOpportunity(conc) < 0.10000000149011612) { return(0f); } float num = 0f; num += conc.priority; num = (float)(num + LessonAutoActivator.GetOpportunity(conc) / 100.0 * 60.0); return((float)(num * (1.0 - PlayerKnowledgeDatabase.GetKnowledge(conc)))); }
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 (this.selectedConcept == conc) { num += 40f; } if (drawProgressBar) { num += 30f; } Rect outRect = new Rect((float)UI.screenWidth - 8f - 200f - 8f - 310f, 8f, 310f, num); Rect outRect2 = 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), LearningReadout.ProgressBarFillTex); } if (this.selectedConcept == conc) { if (Widgets.CloseButtonFor(outRect)) { this.selectedConcept = null; SoundDefOf.PageChange.PlayOneShotOnCamera(null); } Rect rect5 = new Rect(rect.center.x - 70f, rect.yMax - 30f, 140f, 30f); if (!complete) { if (Widgets.ButtonText(rect5, "MarkLearned".Translate(), true, false, true)) { this.selectedConcept = null; SoundDefOf.PageChange.PlayOneShotOnCamera(null); 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; } } }, false, false, 1f); return(outRect2); }
private static ConceptDef MostDesiredConcept() { float num = -9999f; ConceptDef result = null; List <ConceptDef> allDefsListForReading = DefDatabase <ConceptDef> .AllDefsListForReading; for (int i = 0; i < allDefsListForReading.Count; i++) { ConceptDef conceptDef = allDefsListForReading[i]; float desire = GetDesire(conceptDef); if (desire > num && (!conceptDef.needsOpportunity || !(GetOpportunity(conceptDef) < 0.1f)) && !(PlayerKnowledgeDatabase.GetKnowledge(conceptDef) > 0.15f)) { num = desire; result = conceptDef; } } return(result); }
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 < 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(); } } } }