private void LogValues() { if (lastLogCheck == 0) { hasLog = File.Exists(oriLogPath); lastLogCheck = 300; } lastLogCheck--; if (hasLog || !Console.IsOutputRedirected) { string prev = "", curr = ""; GameState gameState = mem.GetGameState(); bool isInGameWorld = CheckInGameWorld(gameState); bool isStartingGame = CheckStartingNewGame(gameState); foreach (string key in keys) { prev = currentValues[key]; switch (key) { case "StartingGame": curr = isStartingGame.ToString(); break; case "IsInGameWorld": curr = isInGameWorld.ToString(); break; case "CurrentSplit": curr = currentSplit.ToString(); break; case "SplitName": curr = currentSplit < settings.Splits.Count ? settings.Splits[currentSplit].Field + " - " + settings.Splits[currentSplit].Value : ""; break; case "GameState": curr = mem.GetGameState().ToString(); break; case "GameWorld": case "GameplayCamera": case "WorldEvents": case "SeinCharacter": case "ScenesManager": case "RainbowDash": case "GameStateMachine": curr = mem.GetPointer(key); break; default: if (isInGameWorld) { switch (key) { case "AbilityCells": curr = mem.GetAbilityCells().ToString(); break; case "EnergyCells": curr = ((int)mem.GetCurrentENMax()).ToString(); break; case "CurrentEnergy": curr = mem.GetCurrentEN().ToString("0.00"); break; case "HealthCells": curr = mem.GetCurrentHPMax().ToString(); break; case "CurrentHealth": curr = mem.GetCurrentHP().ToString(); break; case "XPLevel": curr = mem.GetCurrentLevel().ToString(); break; case "CurrentArea": curr = mem.GetCurrentArea().Name; break; default: if (OriMemory.abilities.ContainsKey(key)) { curr = mem.GetAbility(key).ToString(); } else if (OriMemory.events.ContainsKey(key)) { curr = mem.GetEvent(key).ToString(); } else if (OriMemory.keys.ContainsKey(key)) { curr = mem.GetKey(key).ToString(); } else { curr = ""; } break; } } else { curr = prev; } break; } if (curr == null) { curr = string.Empty; } if (!prev.Equals(curr)) { WriteLog(DateTime.Now.ToString(@"HH\:mm\:ss.fff") + (Model != null ? " | " + Model.CurrentState.CurrentTime.RealTime.Value.ToString("G").Substring(3, 11) : "") + ": " + key + ": ".PadRight(30 - key.Length < 0 ? 0 : 30 - key.Length, ' ') + (prev.Length > 25 ? prev : prev.PadLeft(25, ' ')) + " -> " + curr); currentValues[key] = curr; } } } }