Beispiel #1
0
 /// <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);
     }
 }
Beispiel #2
0
        /// <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);
            }
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
        }