Ejemplo n.º 1
0
 public PASCIISpeechRequest(string text, Game.MessageType type, byte font, ushort hue) : base(0x03)
 {
     WriteByte((byte)type);
     WriteUShort(hue);
     WriteUShort(font);
     WriteASCII(text);
 }
Ejemplo n.º 2
0
        public PUnicodeSpeechRequest(string text, Game.MessageType type, byte font, ushort hue, string lang) : base(0xAD)
        {
            var entries = SpeechesLoader.Instance.GetKeywords(text);

            bool encoded = entries != null && entries.Count != 0;

            if (encoded)
            {
                type |= Game.MessageType.Encoded;
            }

            WriteByte((byte)type);
            WriteUShort(hue);
            WriteUShort(font);
            WriteASCII(lang, 4);

            if (encoded)
            {
                List <byte> codeBytes = new List <byte>();
                byte[]      utf8      = Encoding.UTF8.GetBytes(text);
                int         length    = entries.Count;
                codeBytes.Add((byte)(length >> 4));
                int  num3  = length & 15;
                bool flag  = false;
                int  index = 0;

                while (index < length)
                {
                    int keywordID = entries[index].KeywordID;

                    if (flag)
                    {
                        codeBytes.Add((byte)(keywordID >> 4));
                        num3 = keywordID & 15;
                    }
                    else
                    {
                        codeBytes.Add((byte)((num3 << 4) | ((keywordID >> 8) & 15)));
                        codeBytes.Add((byte)keywordID);
                    }

                    index++;
                    flag = !flag;
                }

                if (!flag)
                {
                    codeBytes.Add((byte)(num3 << 4));
                }

                for (int i = 0; i < codeBytes.Count; i++)
                {
                    WriteByte(codeBytes[i]);
                }

                WriteBytes(utf8, 0, utf8.Length);
                WriteByte(0);
            }
            else
            {
                WriteUnicode(text, 14 + text.Length * 2);
            }
        }