public static void KeyMashes() { if (Event.current.type == EventType.KeyDown) { var speed = Find.TickManager.CurTimeSpeed; if (KeyBindingDefOf.TogglePause.KeyDownEvent) { TogglePause(); PlaySound(); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.Pause, KnowledgeAmount.SpecificInteraction); Event.current.Use(); } else if (KeyBindingDefOf.TimeSpeed_Normal.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Normal; TimeSlider.setTimeSettingForTimeSpeed(TimeSpeed.Normal); PlaySound(); LearnedIt(); Event.current.Use(); } else if (KeyBindingDefOf.TimeSpeed_Fast.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Fast; TimeSlider.setTimeSettingForTimeSpeed(TimeSpeed.Fast); PlaySound(); LearnedIt(); Event.current.Use(); } else if (KeyBindingDefOf.TimeSpeed_Superfast.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Superfast; TimeSlider.setTimeSettingForTimeSpeed(TimeSpeed.Superfast); PlaySound(); LearnedIt(); Event.current.Use(); } else if (KeyBindingDefOf.TimeSpeed_Ultrafast.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Ultrafast; TimeSlider.setTimeSettingForTimeSpeed(TimeSpeed.Ultrafast); PlaySound(); LearnedIt(); Event.current.Use(); } else if (KeyBindingDefOf.Dev_TickOnce.KeyDownEvent && speed == TimeSpeed.Paused) { Log.Message("TRiGgeR Single Tick"); Find.TickManager.DoSingleTick(); SoundDefOf.Clock_Stop.PlayOneShotOnCamera(null); } } }
private static void DrawSlider(Rect rect) { var old = TimeSlider.timeSetting; var outSpeed = TimeSpeed.Normal; Rect slider = new Rect(rect.x, rect.y, rect.width * 4f, rect.height); string label = TimeSlider.describe(TimeSlider.timeSetting, ref outSpeed); var newVal = Widgets.HorizontalSlider(slider, old, 0f, TimeSlideMod.latest.maxSlider, false, label); if (outSpeed == TimeSpeed.Paused) { Find.TickManager.Pause(); TimeSlider.setTimeSettingForTimeSpeed(TimeSpeed.Paused); } else { var curTimeSpeed = Find.TickManager.CurTimeSpeed; if (outSpeed != curTimeSpeed) { Find.TickManager.CurTimeSpeed = outSpeed; //carry the helper around MVP : Able to adjusted CutTimeSpeed to nearest reference } } if (Math.Abs(newVal - old) > .6e-6) { TimeSlider.timeSetting = newVal; } return; }
private static void TogglePause() { TimeSlider.pause = !TimeSlider.pause; if (TimeSlider.pause) { last = TimeSlider.timeSetting; TimeSlider.setTimeSettingForTimeSpeed(TimeSpeed.Paused); } else { TimeSlider.timeSetting = last; } Find.TickManager.TogglePaused(); }
static void Postfix(ref float __result, TickManager __instance) { if (__result < 0.04f || __instance.Paused || TimeSlider.timeSetting < TimeSlider.MinSetting) { __result = 0f; return; } if (__instance.slower.ForcedNormalSpeed) { __result = Math.Min(1.0f, TimeSlider.tickRate()); } else { __result = TimeSlider.tickRate(); } }
private static void PlaySound() { TimeSlider.PlaySoundOf(Find.TickManager.CurTimeSpeed); }