/// <summary> /// ローカライズエントリーをStreamに書き出す。 /// </summary> /// <param name="entry">ローカライズエントリー</param> /// <param name="bw">Stream</param> private static void WriteEntry(UapLocalizationEntry entry, BinaryWriter bw) { UapBinaryUtils.WriteString(bw, entry.Name); UapBinaryUtils.WriteString(bw, entry.ID); bw.Write(entry.LanguageEntries.Count); foreach (var langEntryPair in entry.LanguageEntries) { bw.Write(langEntryPair.Key); UapBinaryUtils.WriteString(bw, langEntryPair.Value); } }
/// <summary> /// DialogエントリーをStreamに書き出す。 /// </summary> /// <param name="entry">Dialogエントリー</param> /// <param name="bw">Stream</param> private static void WriteEntry(UapDialogEntry entry, BinaryWriter bw) { UapBinaryUtils.WriteString(bw, entry.LineID); UapBinaryUtils.WriteString(bw, entry.Character); bw.Write(entry.LanguageEntries.Count); foreach (var lang in entry.LanguageEntries.Values) { bw.Write(lang.LangCode); UapBinaryUtils.WriteString(bw, lang.Text); UapBinaryUtils.WriteString(bw, lang.Clip); bw.Write(lang.Vol); } }
/// <summary> /// Streamからデータを読み込み、Dialogエントリー返す。 /// </summary> /// <param name="br">Stream</param> /// <returns>Dialogエントリー</returns> private static UapDialogEntry ReadEntry(BinaryReader br) { var lineID = UapBinaryUtils.ReadString(br); var character = UapBinaryUtils.ReadString(br); var result = new UapDialogEntry(lineID, character); var size = br.ReadInt32(); for (int i = 0; i < size; i++) { var langCode = br.ReadInt32(); var text = UapBinaryUtils.ReadString(br); var clip = UapBinaryUtils.ReadString(br); float vol = br.ReadSingle(); result.AddEntry(langCode, text, clip, vol); } return(result); }
/// <summary> /// Streamからデータを読み込みローカライズエントリー返す。 /// </summary> /// <param name="br">Stream</param> /// <param name="fileID">fileID</param> /// <returns>ローカライズエントリー</returns> private static UapLocalizationEntry ReadEntry( BinaryReader br, string fileID) { var name = UapBinaryUtils.ReadString(br); var id = UapBinaryUtils.ReadString(br); var result = new UapLocalizationEntry(name, id); var size = br.ReadInt32(); for (int i = 0; i < size; i++) { var langCode = br.ReadInt32(); var text = UapBinaryUtils.ReadString(br); if (!result.AddEntry(langCode, text)) { //// GOG版(v2.7.1)のデータバグ対策。 Console.WriteLine($"Warning: Duplicate language FileID({fileID}) Name({name}) ID({id}) LangNo({langCode})"); } } return(result); }