public static bool ReplaceBenchmark(string basepath, BenchmarkOffset target, BenchmarkOffset source) { if (target == null || source == null) { Error.ErrorBox("Either target was null or source was null!"); return(false); } string bigfileName = basepath + @"\Yeti.big"; if (!File.Exists(bigfileName)) { Error.ErrorBox("Bigfile could not be found!"); return(false); } try { int targetOffset = Convert.ToInt32(target.Offset, 16); int targetKey = Convert.ToInt32(target.Key, 16); int sourceOffset = Convert.ToInt32(source.Offset, 16); int sourceKey = Convert.ToInt32(source.Key, 16); using (FileStream fs = File.Open(bigfileName, FileMode.Open, FileAccess.ReadWrite)) { fs.Seek(targetOffset, SeekOrigin.Begin); if (targetOffset != sourceOffset) { fs.Write(Convert.ToInt32("0xFFFFFFFF", 16).ToBytes(), 0, 4); fs.Seek(sourceOffset, SeekOrigin.Begin); fs.Write(targetKey.ToBytes(), 0, 4); } else { fs.Write(sourceKey.ToBytes(), 0, 4); } } return(true); } catch (Exception ex) { Error.ErrorBox(ex, "Error replacing benchmark!"); return(false); } }
public void LoadFile() { gamePaths = new List <string>(); customOffsets = new List <string>(); benchmarkOffsets = new List <BenchmarkOffset>(); customArguments = ""; if (!File.Exists(FILE_NAME)) { File.Create(FILE_NAME); return; } string[] lines = File.ReadAllLines(FILE_NAME); for (int i = 0; i < lines.Length; i++) { try { string[] split = lines[i].Split('|'); if (split.Length != 2) { Error.ErrorBox("Config file is corrupt!", true); } if (split[0] == "executable") { executableName = split[1]; } if (split[0] == "gamePaths") { gamePaths.Add(split[1]); } if (split[0] == "customOffsets") { customOffsets.Add(split[1]); } if (split[0] == "benchmarkOffset") { string[] benchOffsetSplit = split[1].Split(OFFSET_SEPARATOR); benchmarkOffsets.Add(new BenchmarkOffset(benchOffsetSplit[0], benchOffsetSplit[1], benchOffsetSplit[2])); } if (split[0] == "args") { customArguments = split[1]; } if (split[0] == "isUnlocked") { isUnlocked = split[1]; } } catch (Exception ex) { Error.ErrorBox(ex, "Error loading config file!", true); } } if (!IsUnlocked) { lockedTargetOffset = benchmarkOffsets[0]; benchmarkOffsets.RemoveAt(0); } }