Beispiel #1
0
        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()));
        }