private void LogValues() { if (lastLogCheck == 0) { hasLog = File.Exists(LOGFILE); lastLogCheck = 300; } lastLogCheck--; if (hasLog || !Console.IsOutputRedirected) { if (mem.UIState() == UIState.PLAYING) { pdata.UpdateData(mem, WriteLogWithTime); } string prev = "", curr = ""; foreach (string key in keys) { prev = currentValues[key]; switch (key) { case "CurrentSplit": curr = currentSplit.ToString(); break; case "State": curr = state.ToString(); break; case "GameState": curr = mem.GameState().ToString(); break; case "SceneName": curr = mem.SceneName(); break; case "NextSceneName": curr = mem.NextSceneName(); break; case "Charms": curr = mem.CharmCount().ToString(); break; case "MapZone": curr = ((MapZone)mem.PlayerData <int>(Offset.mapZone)).ToString(); break; case "CameraMode": curr = mem.CameraMode().ToString(); break; case "MenuState": curr = mem.MenuState().ToString(); break; case "UIState": curr = mem.UIState().ToString(); break; case "AcceptingInput": curr = mem.AcceptingInput().ToString(); break; case "ActorState": curr = mem.HeroActorState().ToString(); break; default: curr = ""; break; } if (!prev.Equals(curr)) { WriteLogWithTime(key + ": ".PadRight(16 - key.Length, ' ') + prev.PadLeft(25, ' ') + " -> " + curr); currentValues[key] = curr; } } } }