public static bool DoTimeControlsGUI(Rect timerRect) { if (Event.current.type != EventType.KeyDown) { return(true); } if (!Find.WindowStack.WindowsForcePause) { if (KeyBindingDefOf.TimeSpeed_Fast.KeyDownEvent || KeyBindingDefOf.TimeSpeed_Superfast.KeyDownEvent || KeyBindingDefOf.TimeSpeed_Ultrafast.KeyDownEvent ) { if (lastTickForcedSlow) { overrideForcedSlow = true; } } } //allow speed 4 even if not dev mode if (Prefs.DevMode) { return(true); } TickManager tickManager = Find.TickManager; if (KeyBindingDefOf.TimeSpeed_Ultrafast.KeyDownEvent) { tickManager.CurTimeSpeed = TimeSpeed.Ultrafast; TimeControls.PlaySoundOf(tickManager.CurTimeSpeed); Event.current.Use(); } if (!KeyBindingDefOf.Dev_TickOnce.KeyDownEvent || tickManager.CurTimeSpeed != TimeSpeed.Paused) { return(true); } tickManager.DoSingleTick(); SoundDefOf.Clock_Stop.PlayOneShotOnCamera(); return(true); }
public static void DoTimeControlsGUI(Rect timerRect) { TickManager tickManager = Find.TickManager; GUI.BeginGroup(timerRect); Rect rect = new Rect(0f, 0f, TimeControls.TimeButSize.x, TimeControls.TimeButSize.y); for (int i = 0; i < TimeControls.CachedTimeSpeedValues.Length; i++) { TimeSpeed timeSpeed = TimeControls.CachedTimeSpeedValues[i]; if (timeSpeed != TimeSpeed.Ultrafast) { if (Widgets.ButtonImage(rect, TexButton.SpeedButtonTextures[(int)timeSpeed])) { if (timeSpeed == TimeSpeed.Paused) { tickManager.TogglePaused(); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.Pause, KnowledgeAmount.SpecificInteraction); } else { tickManager.CurTimeSpeed = timeSpeed; PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.TimeControls, KnowledgeAmount.SpecificInteraction); } TimeControls.PlaySoundOf(tickManager.CurTimeSpeed); } if (tickManager.CurTimeSpeed == timeSpeed) { GUI.DrawTexture(rect, TexUI.HighlightTex); } rect.x += rect.width; } } if (Find.TickManager.slower.ForcedNormalSpeed) { Widgets.DrawLineHorizontal(rect.width * 2f, rect.height / 2f, rect.width * 2f); } GUI.EndGroup(); GenUI.AbsorbClicksInRect(timerRect); UIHighlighter.HighlightOpportunity(timerRect, "TimeControls"); if (Event.current.type == EventType.KeyDown) { if (KeyBindingDefOf.TogglePause.KeyDownEvent) { Find.TickManager.TogglePaused(); TimeControls.PlaySoundOf(Find.TickManager.CurTimeSpeed); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.Pause, KnowledgeAmount.SpecificInteraction); Event.current.Use(); } if (KeyBindingDefOf.TimeSpeed_Normal.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Normal; TimeControls.PlaySoundOf(Find.TickManager.CurTimeSpeed); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.TimeControls, KnowledgeAmount.SpecificInteraction); Event.current.Use(); } if (KeyBindingDefOf.TimeSpeed_Fast.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Fast; TimeControls.PlaySoundOf(Find.TickManager.CurTimeSpeed); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.TimeControls, KnowledgeAmount.SpecificInteraction); Event.current.Use(); } if (KeyBindingDefOf.TimeSpeed_Superfast.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Superfast; TimeControls.PlaySoundOf(Find.TickManager.CurTimeSpeed); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.TimeControls, KnowledgeAmount.SpecificInteraction); Event.current.Use(); } if (Prefs.DevMode) { if (KeyBindingDefOf.TimeSpeed_Ultrafast.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Ultrafast; TimeControls.PlaySoundOf(Find.TickManager.CurTimeSpeed); Event.current.Use(); } if (KeyBindingDefOf.Dev_TickOnce.KeyDownEvent && tickManager.CurTimeSpeed == TimeSpeed.Paused) { tickManager.DoSingleTick(); SoundDefOf.Clock_Stop.PlayOneShotOnCamera(null); } } } }
public static bool Prefix(ref int ___ticksGameInt, ref TickManager __instance) { Rand.PushState(___ticksGameInt); getValuePatch.SendDiagDataToServer(); getValuePatch.diagData.Clear(); CooperateRimming.dumpRand = true; if (sw == null) { sw = new Stopwatch(); ACKSW = new Stopwatch(); sw.Start(); ACKSW.Start(); /*fix for newly loaded game*/ TickManagerPatch.nextCommunicationTick = Verse.Find.TickManager.TicksGame; TickManagerPatch.nextProcessionTick = Verse.Find.TickManager.TicksGame; if (!imInSync) { if (nextCommunicationTick == Verse.Find.TickManager.TicksGame) { imInSync = SyncTickData.FlushSyncTickData(nextProcessionTick + syncRoundLength * syncTickRoundOffset); } } if (cachedData == null) { return(false); } //for (; cachedData == null;) { } } shouldReallyTick = false; if (NetDemo.HasAllDataForFrame(Verse.Find.TickManager.TicksGame)) { NetDemo.Receive(); } if (sw.ElapsedMilliseconds > (1000 / ticksPerSecond) && !__instance.Paused) { sw.Reset(); sw.Start(); bool canNormallyTick = nextProcessionTick > Verse.Find.TickManager.TicksGame; //RimLog.Message("Tick " + ___ticksGameInt + " canNormallyTick " + canNormallyTick + "| comm " + nextCommunicationTick + " | " + nextProcessionTick); if (canNormallyTick) { //Utilities.RimLog.Message("normal tick at " + Verse.Find.TickManager.TicksGame + " nsync " + nextSyncTickValue); ulong i = 0; foreach (var act in RandContextCounter.replacement_seed) { act((ulong)___ticksGameInt + (i++)); } __instance.DoSingleTick(); } if (SyncTickData.cliendID > -1 && ACKSW.ElapsedMilliseconds > 50) { ACKSW.Reset(); ACKSW.Start(); //RimLog.Message("Sending state request for " + nextSyncTickValue); //NetDemo.SendStateRequest(nextSyncTickValue, SyncTickData.cliendID); } if (!imInSync) { if (nextCommunicationTick == Verse.Find.TickManager.TicksGame) { imInSync = SyncTickData.FlushSyncTickData(nextProcessionTick + syncRoundLength * syncTickRoundOffset); } } { if (nextProcessionTick == Verse.Find.TickManager.TicksGame) { #if FILE_TRANSFER bool allSyncDataAvailable = SyncTickData.tickFileNames(___ticksGameInt).All(u => System.IO.File.Exists(u + ".sync")); #else #endif //RimLog.Message("Frame " + ___ticksGameInt + " : " + " ::: " + allSyncDataAvailable + "[" + ___ticksGameInt + "] :: " + nextSyncTickValue + " [is synced : ] " + imInSync); Action onA = LocalDB.OnApply; if (cachedData != null) { IsSyncTick = true; //RimLog.Message("Synctick happened at " + ___ticksGameInt); SyncTickData.IsDeserializing = true; //JobTrackerPatch.FlushCData(); shouldReallyTick = true; streamholder.WriteLine("pre-deserialize tick at " + Verse.Find.TickManager.TicksGame, "tickstate"); streamholder.WriteLine("data applied at " + Verse.Find.TickManager.TicksGame, "tickstate"); //lock (LocalDB.OnApply) { Rand.PushState(___ticksGameInt); try { //RimLog.Message("applying at tick " + Verse.Find.TickManager.TicksGame); var cd = cachedData; cachedData = null; ulong i = 0; foreach (var act in RandContextCounter.replacement_seed) { act((ulong)___ticksGameInt + (i++)); } foreach (var a in cd) { a.AcceptResult(); } TickManagerPatch.SetSyncTickValue(nextProcessionTick + syncRoundLength); nextCommunicationTick += syncRoundLength; //Interlocked.Exchange(ref LocalDB.OnApply, null); //LocalDB.clientLocalStorage.ForEach(u => u.Value.AcceptResult()); //nextSyncTickValue = Verse.Find.TickManager.TicksGame + syncRoundLength; } catch (Exception ee) { RimLog.Message(ee.ToString()); } Rand.PopState(); LocalDB.clientLocalStorage.Clear(); } //SyncTickData.Apply(___ticksGameInt); //__instance.DoSingleTick(); imInSync = false; } } } } //ReferenceTranspilerMethod(ref ___ticksGameInt); Rand.PopState(); return(false); }
public static bool DoTimeControlsGUI(Rect timerRect) { TickManager tickManager = Find.TickManager; GUI.BeginGroup(timerRect); Rect rect = new Rect(0.0f, 0.0f, TimeControls.TimeButSize.x, TimeControls.TimeButSize.y); for (int index = 0; index < TimeControls.CachedTimeSpeedValues.Length; ++index) { TimeSpeed timeSpeed = TimeControls.CachedTimeSpeedValues[index]; if (timeSpeed != TimeSpeed.Ultrafast) { if (Widgets.ButtonImage(rect, TexButton.SpeedButtonTextures[(int)timeSpeed])) { if (timeSpeed == TimeSpeed.Paused) { tickManager.TogglePaused(); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.Pause, KnowledgeAmount.SpecificInteraction); } else { tickManager.CurTimeSpeed = timeSpeed; PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.TimeControls, KnowledgeAmount.SpecificInteraction); } TimeControls.PlaySoundOf(tickManager.CurTimeSpeed); } if (tickManager.CurTimeSpeed == timeSpeed) { GUI.DrawTexture(rect, (Texture)TexUI.HighlightTex); } rect.x += rect.width; } } if (Find.TickManager.slower.ForcedNormalSpeed) { Widgets.DrawLineHorizontal(rect.width * 2f, rect.height / 2f, rect.width * 2f); } GUI.EndGroup(); GenUI.AbsorbClicksInRect(timerRect); UIHighlighter.HighlightOpportunity(timerRect, "TimeControls"); if (Event.current.type != EventType.KeyDown) { return(false); } if (KeyBindingDefOf.TogglePause.KeyDownEvent) { Find.TickManager.TogglePaused(); TimeControls.PlaySoundOf(Find.TickManager.CurTimeSpeed); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.Pause, KnowledgeAmount.SpecificInteraction); Event.current.Use(); } if (KeyBindingDefOf.TimeSpeedNormal.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Normal; TimeControls.PlaySoundOf(Find.TickManager.CurTimeSpeed); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.TimeControls, KnowledgeAmount.SpecificInteraction); Event.current.Use(); } if (KeyBindingDefOf.TimeSpeedFast.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Fast; TimeControls.PlaySoundOf(Find.TickManager.CurTimeSpeed); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.TimeControls, KnowledgeAmount.SpecificInteraction); Event.current.Use(); } if (KeyBindingDefOf.TimeSpeedSuperfast.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Superfast; TimeControls.PlaySoundOf(Find.TickManager.CurTimeSpeed); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.TimeControls, KnowledgeAmount.SpecificInteraction); Event.current.Use(); } //Removed to Allow Speed 4 Without Dev Mode. //if (!Prefs.DevMode) // return false; if (KeyBindingDefOf.TimeSpeedUltrafast.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Ultrafast; TimeControls.PlaySoundOf(Find.TickManager.CurTimeSpeed); Event.current.Use(); } if (!KeyBindingDefOf.TickOnce.KeyDownEvent || tickManager.CurTimeSpeed != TimeSpeed.Paused) { return(false); } tickManager.DoSingleTick(); SoundStarter.PlayOneShotOnCamera(SoundDef.Named(TimeControls.SpeedSounds[0]), (Map)null); return(false); }
public static bool DoTimeControlsGUI(Rect timerRect) { TickManager tickManager = Find.TickManager; GUI.BeginGroup(timerRect); Rect rect = new Rect(0f, 0f, TimeControls.TimeButSize.x, TimeControls.TimeButSize.y); for (int i = 0; i < CachedTimeSpeedValues.Length; i++) { TimeSpeed timeSpeed = CachedTimeSpeedValues[i]; if (timeSpeed == TimeSpeed.Ultrafast) { continue; } if (Widgets.ButtonImage(rect, TexButton.SpeedButtonTextures[(uint)timeSpeed])) { if (timeSpeed == TimeSpeed.Paused) { tickManager.TogglePaused(); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.Pause, KnowledgeAmount.SpecificInteraction); } else { tickManager.CurTimeSpeed = timeSpeed; PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.TimeControls, KnowledgeAmount.SpecificInteraction); } PlaySoundOf(tickManager.CurTimeSpeed); } if (tickManager.CurTimeSpeed == timeSpeed) { GUI.DrawTexture(rect, TexUI.HighlightTex); } rect.x += rect.width; } if (Find.TickManager.slower.ForcedNormalSpeed && !RimThreadedMod.Settings.disableforcedslowdowns) { Widgets.DrawLineHorizontal(rect.width * 2f, rect.height / 2f, rect.width * 2f); } GUI.EndGroup(); GenUI.AbsorbClicksInRect(timerRect); UIHighlighter.HighlightOpportunity(timerRect, "TimeControls"); if (Event.current.type != EventType.KeyDown) { return(false); } if (KeyBindingDefOf.TogglePause.KeyDownEvent) { Find.TickManager.TogglePaused(); PlaySoundOf(Find.TickManager.CurTimeSpeed); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.Pause, KnowledgeAmount.SpecificInteraction); Event.current.Use(); } if (!Find.WindowStack.WindowsForcePause) { if (KeyBindingDefOf.TimeSpeed_Normal.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Normal; PlaySoundOf(Find.TickManager.CurTimeSpeed); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.TimeControls, KnowledgeAmount.SpecificInteraction); Event.current.Use(); } if (KeyBindingDefOf.TimeSpeed_Fast.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Fast; if (lastTickForcedSlow) { overrideForcedSlow = true; } //forceNormalSpeedUntil(Find.TickManager.slower) = 0; PlaySoundOf(Find.TickManager.CurTimeSpeed); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.TimeControls, KnowledgeAmount.SpecificInteraction); Event.current.Use(); } if (KeyBindingDefOf.TimeSpeed_Superfast.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Superfast; if (lastTickForcedSlow) { overrideForcedSlow = true; } //forceNormalSpeedUntil(Find.TickManager.slower) = 0; PlaySoundOf(Find.TickManager.CurTimeSpeed); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.TimeControls, KnowledgeAmount.SpecificInteraction); Event.current.Use(); } if (KeyBindingDefOf.TimeSpeed_Ultrafast.KeyDownEvent) { Find.TickManager.CurTimeSpeed = TimeSpeed.Ultrafast; if (lastTickForcedSlow) { overrideForcedSlow = true; } //forceNormalSpeedUntil(Find.TickManager.slower) = 0; PlaySoundOf(Find.TickManager.CurTimeSpeed); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.TimeControls, KnowledgeAmount.SpecificInteraction); Event.current.Use(); } } if (Prefs.DevMode) { if (KeyBindingDefOf.Dev_TickOnce.KeyDownEvent && tickManager.CurTimeSpeed == TimeSpeed.Paused) { tickManager.DoSingleTick(); SoundDefOf.Clock_Stop.PlayOneShotOnCamera(); } } return(false); }