/// <summary> /// DialogファイルをStreamに書き出す。 /// </summary> /// <param name="dialogFile">Dialogファイル</param> /// <param name="bw">Stream</param> private static void WriteEntries(UapDialogFile dialogFile, BinaryWriter bw) { bw.Write(dialogFile.Items.Count); foreach (var entry in dialogFile.Items.Values) { WriteEntry(entry, bw); } }
/// <summary> /// StreamからDialogエントリー読み込み、Dialogファイルに追加する。 /// </summary> /// <param name="dialogFile">Dialogファイル</param> /// <param name="br">Stream</param> private static void ReadEntries( UapDialogFile dialogFile, BinaryReader br) { var entries = br.ReadInt32(); for (int i = 0; i < entries; i++) { var entry = ReadEntry(br); dialogFile.AddEntry(entry); } }
/// <summary> /// Dialogファイルを追加する。 /// </summary> /// <param name="dialogFile">Dialogファイル</param> public void AddFile(UapDialogFile dialogFile) { if (this.Items.ContainsKey(dialogFile.FileID)) { throw new Exception($"Duplicate file id({dialogFile.FileID})."); } else { this.Items.Add(dialogFile.FileID, dialogFile); } }
/// <summary> /// 自分自身のクローンを返す。 /// </summary> /// <returns>Dialogファイル</returns> public UapDialogFile Clone() { var uapDialogFile = new UapDialogFile(this.FileID); foreach (var entry in this.Items.Values) { uapDialogFile.AddEntry(entry.Clone()); } return(uapDialogFile); }
/// <summary> /// 指定したパスのMB(Dialog)を読み込み、Dialog情報に追加する。 /// </summary> /// <param name="dialogInfo">Dialog情報</param> /// <param name="path">MB(Dialog)のパス</param> private static void LoadFromFile(UapDialogInfo dialogInfo, string path) { using (var sr = new StreamReader(path)) { using (var br = new BinaryReader(sr.BaseStream, Encoding.UTF8)) { var fileID = Path.GetFileNameWithoutExtension(path); var dialogFile = new UapDialogFile(fileID); ReadEntries(dialogFile, br); dialogInfo.AddFile(dialogFile); } } }