private static string ReadString(FileReader reader, Encoding encoding) { List <byte> values = new List <byte>(); while (!reader.EndOfStream) { byte cha = reader.ReadByte(); if (cha == 0x0) { break; } values.Add(cha); } List <char> text = new List <char>(); for (int i = 0; i < values.Count; i++) { var val = values[i]; if (CharacterTable.ContainsKey(val)) { text.Add(CharacterTable[val]); } else if (val == 0x0C) { int count = 1; while (values[i + 1] == 0x0C) { count++; i++; } text.AddRange($"[Align_{count}]"); } else if (val == 0x0D) { text.AddRange("[Select2]"); } else if (val == 0x0F) { text.AddRange("[Select]"); } else if (val == 0x1C) { text.AddRange($"[Dialog:{(DialogCodes)values[i + 1]}]"); i++; } else if (val == 0x1E) { //End of color tag if (values[i + 1] == (byte)ColorCodes.END) { text.AddRange($"]"); } else { text.AddRange($"[COLOR:({(ColorCodes)values[i+1]})"); } i++; } else if (val == 0x1F) { text.AddRange($"[INSERT:{(RuntimeCodes)values[i + 1]}]"); i++; } else if (val == 0x0E) { text.AddRange($"[ICON:{(IconCodes)values[i + 1]}]"); i++; } else { text.Add((char)val); } } return(new string(text.ToArray())); }