private static void ReadLocaleChanges(IReader reader, byte version, Patch output) { if (version > 0) { throw new NotSupportedException("Unrecognized \"locl\" block version"); } // Read language changes byte numLanguageChanges = reader.ReadByte(); for (byte i = 0; i < numLanguageChanges; i++) { byte languageIndex = reader.ReadByte(); var languageChange = new LanguageChange(languageIndex); // Read string changes int numStringChanges = reader.ReadInt32(); for (int j = 0; j < numStringChanges; j++) { int index = reader.ReadInt32(); string newValue = reader.ReadUTF8(); languageChange.LocaleChanges.Add(new LocaleChange(index, newValue)); } output.LanguageChanges.Add(languageChange); } }
/// <summary> /// Writes changes to a language in a cache file. /// Note that ICacheFile.SaveChanges() may need to be called after this. /// </summary> /// <param name="changes">The changes to make to the language.</param> /// <param name="cacheFile">The cache file to write changes to.</param> /// <param name="stream">The stream to write changes to.</param> public static void WriteLanguageChange(LanguageChange changes, ICacheFile cacheFile, IStream stream) { if (changes.LanguageIndex >= cacheFile.Languages.Count) throw new ArgumentException("Language changes cannot be applied to undefined languages in a cache file"); // Load the language table and apply the changes var language = cacheFile.Languages[changes.LanguageIndex]; var table = language.LoadStrings(stream); MakeLocaleChanges(changes.LocaleChanges, table); // Write the table back to the file language.SaveStrings(stream, table); }
/// <summary> /// Writes changes to a language in a cache file. /// Note that ICacheFile.SaveChanges() may need to be called after this. /// </summary> /// <param name="changes">The changes to make to the language.</param> /// <param name="cacheFile">The cache file to write changes to.</param> /// <param name="stream">The stream to write changes to.</param> public static void WriteLanguageChange(LanguageChange changes, ICacheFile cacheFile, IStream stream) { throw new NotImplementedException("Legacy locale patching is not supported at the moment"); /*if (changes.LanguageIndex >= cacheFile.Languages.Count) * throw new ArgumentException("Language changes cannot be applied to undefined languages in a cache file"); * * // Load the language table and apply the changes * var language = cacheFile.Languages[changes.LanguageIndex]; * var table = language.LoadStrings(stream); * MakeLocaleChanges(changes.LocaleChanges, table); * * // Write the table back to the file * language.SaveStrings(stream, table);*/ }
private static void ReadLocaleChanges(IReader reader, Patch output) { // Read language changes byte numLanguageChanges = reader.ReadByte(); for (byte i = 0; i < numLanguageChanges; i++) { byte languageIndex = reader.ReadByte(); var languageChange = new LanguageChange(languageIndex); // Read string changes int numStringChanges = reader.ReadInt32(); for (int j = 0; j < numStringChanges; j++) { int index = reader.ReadInt32(); string newValue = reader.ReadUTF8(); languageChange.LocaleChanges.Add(new LocaleChange(index, newValue)); } output.LanguageChanges.Add(languageChange); } }
private static void ReadLocaleChanges(IReader reader, Patch output) { // ReSharper disable UnusedVariable var version = reader.ReadByte(); // ReSharper restore UnusedVariable // Read language changes var numLanguageChanges = reader.ReadByte(); for (byte i = 0; i < numLanguageChanges; i++) { var languageIndex = reader.ReadByte(); var languageChange = new LanguageChange(languageIndex); // Read string changes var numStringChanges = reader.ReadInt32(); for (var j = 0; j < numStringChanges; j++) { var index = reader.ReadInt32(); var newValue = reader.ReadUTF8(); languageChange.LocaleChanges.Add(new LocaleChange(index, newValue)); } output.LanguageChanges.Add(languageChange); } }