示例#1
0
        /// <summary>
        /// 自分自身のクローンを作成しDialogエントリーを返す。
        /// </summary>
        /// <returns>Dialogエントリー</returns>
        public UapDialogEntry Clone()
        {
            var uapDialogEntry = new UapDialogEntry(this.LineID, this.Character);

            foreach (var data in this.LanguageEntries.Values)
            {
                uapDialogEntry.LanguageEntries.Add(data.LangCode, data);
            }

            return(uapDialogEntry);
        }
示例#2
0
 /// <summary>
 /// Dialogエントリーを追加し、そのエントリーを返す。
 /// </summary>
 /// <param name="entry">Dialogエントリー</param>
 /// <returns>追加されたDialogエントリー</returns>
 public UapDialogEntry AddEntry(UapDialogEntry entry)
 {
     if (this.Items.ContainsKey(entry.LineID))
     {
         throw new Exception($"Duplicate dialog entry({entry.LineID}). FileName({this.FileID})");
     }
     else
     {
         this.Items.Add(entry.LineID, entry);
         return(entry);
     }
 }
示例#3
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);
            }
        }
示例#4
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);
        }