/// <summary> /// Checks if a (potentially processed) INI file is up-to-date /// or whether it needs to be (re)processed. /// </summary> /// <param name="fileName">The name of the INI file in its directory. /// Do not supply the entire file path.</param> /// <returns>True if the INI file is up-to-date, false if it needs to be processed.</returns> public bool IsIniUpToDate(string fileName) { PreprocessedIniInfo info = PreprocessedIniInfos.Find(i => i.FileName == fileName); if (info == null) { return(false); } string processedFileHash = Utilities.CalculateSHA1ForFile($"{ProgramConstants.GamePath}INI/{fileName}"); if (processedFileHash != info.ProcessedFileHash) { return(false); } string originalFileHash = Utilities.CalculateSHA1ForFile($"{ProgramConstants.GamePath}INI/Base/{fileName}"); if (originalFileHash != info.OriginalFileHash) { return(false); } return(true); }
public void Write() { string filePath = ProgramConstants.ClientUserFilesPath + "ProcessedIniInfo.ini"; File.Delete(filePath); IniFile iniFile = new IniFile(filePath); for (int i = 0; i < PreprocessedIniInfos.Count; i++) { PreprocessedIniInfo info = PreprocessedIniInfos[i]; iniFile.SetStringValue(ProcessedINIsSection, i.ToString(), string.Join(",", info.FileName, info.OriginalFileHash, info.ProcessedFileHash)); } iniFile.WriteIniFile(); }