Пример #1
0
 /// <summary>
 /// ローカライズエントリーを追加する。
 /// </summary>
 /// <param name="entry">ローカライズエントリー</param>
 public void AddEntry(UapLocalizationEntry entry)
 {
     if (this.Items.ContainsKey(entry.ID))
     {
         throw new Exception($"Duplicate dialog entry. ID({entry.ID}) Name({entry.Name}) FileID({this.FileID})");
     }
     else
     {
         this.Items.Add(entry.ID, entry);
     }
 }
Пример #2
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);
     }
 }
Пример #3
0
        /// <summary>
        /// 自分自身のクローンを作成しローカライズエントリーを返す。
        /// </summary>
        /// <returns>ローカライズエントリー</returns>
        public UapLocalizationEntry Clone()
        {
            var entry = new UapLocalizationEntry(this.Name, this.ID);

            foreach (var langPair in this.LanguageEntries)
            {
                entry.LanguageEntries.Add(langPair.Key, langPair.Value);
            }

            return(entry);
        }
Пример #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);
        }