Exemplo n.º 1
0
        private static void WriteString(FileWriter writer, string text)
        {
            List <byte> values = new List <byte>();

            for (int i = 0; i < text.Length; i++)
            {
                char cha = text[i];
                if (cha == '[')
                {
                    List <byte> specials = new List <byte>();
                    specials.AddRange(TryParseSpecial(text, ref i, "COLOR", typeof(ColorCodes)));
                    if (specials.Count == 0)
                    {
                        specials.AddRange(TryParseSpecial(text, ref i, "ICON", typeof(IconCodes)));
                    }
                    if (specials.Count == 0)
                    {
                        specials.AddRange(TryParseSpecial(text, ref i, "INSERT", typeof(RuntimeCodes)));
                    }
                    if (specials.Count == 0)
                    {
                        specials.AddRange(TryParseSpecial(text, ref i, "Dialog", typeof(DialogCodes)));
                    }

                    if (specials.Count == 0)
                    {
                        values.Add((byte)cha);
                    }
                    else
                    {
                        values.AddRange(specials);
                    }
                }
                else if (cha == ']')
                {
                    values.Add((byte)0x1E);
                    values.Add((byte)8);

                    colorTagActive = false;
                }
                else
                {
                    if (cha == '"' && startQuoteActive)
                    {
                        values.Add((byte)0xC1);
                        startQuoteActive = false;
                    }
                    else if (cha == '"')
                    {
                        values.Add((byte)0xC0);
                        startQuoteActive = true;
                    }
                    else if (CharacterTable.Values.Any(x => x == cha))
                    {
                        var charCode = CharacterTable.FirstOrDefault(x => x.Value == cha).Key;
                        values.Add((byte)charCode);
                    }
                    else
                    {
                        values.Add((byte)cha);
                    }
                }
            }
            values.Add((byte)0);
            writer.Write(values.ToArray());
        }