public PASCIISpeechRequest(string text, Game.MessageType type, byte font, ushort hue) : base(0x03) { WriteByte((byte)type); WriteUShort(hue); WriteUShort(font); WriteASCII(text); }
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); } }