Example #1
0
        /// <summary>
        /// Saves the current ChatMessage to a stream using a StreamHandler.
        /// </summary>
        /// <param name="Writer">
        /// Instance of StreamHandler used to save the current ChatMessage to a stream.
        /// </param>
        public override void Save(StreamHandler Writer)
        {
            Writer.WriteByte((byte)m_type);
            Writer.WriteUInt32((uint)m_language);
            Writer.WriteGuid(m_senderGUID);
            Writer.WriteUInt32(m_unknownUInt32);

            switch (m_type)
            {
                case ChatMessageType.MonsterSay:
                case ChatMessageType.MonsterParty:
                case ChatMessageType.MonsterYell:
                case ChatMessageType.MonsterWhisper:
                case ChatMessageType.MonsterEmote:
                case ChatMessageType.RaidBossEmote:
                case ChatMessageType.RaidBossWhisper:
                case ChatMessageType.BattleNet:
                    Writer.WriteChatString(m_senderName ?? "<sender>");
                    Writer.WriteGuid(m_targetGUID);
                    if (!m_targetGUID.IsEmpty
                        && !m_targetGUID.IsPlayer
                        && !m_targetGUID.IsPet)
                    {
                        Writer.WriteChatString(m_targetName ?? "<target>");
                    }
                    if (m_language == Language.Addon)
                        Writer.WriteCString(m_addonPrefix ?? "<prefix>");
                    Writer.WriteChatString(m_text ?? "<text>");
                    Writer.WriteByte((byte)m_flags);
                    if (m_type == ChatMessageType.RaidBossEmote || m_type == ChatMessageType.RaidBossWhisper)
                    {
                        Writer.WriteSingle(m_displayTime);
                        Writer.WriteBoolean(m_suspendEvent);
                    }
                    break;
                case ChatMessageType.BGSystemNeutral:
                case ChatMessageType.BGSystemAlliance:
                case ChatMessageType.BGSystemHorde:
                    Writer.WriteGuid(m_targetGUID);
                    if (!m_targetGUID.IsEmpty
                        && !m_targetGUID.IsPlayer)
                    {
                        Writer.WriteChatString(m_targetName);
                    }
                    if (m_language == Language.Addon)
                        Writer.WriteCString(m_addonPrefix ?? "<prefix>");
                    Writer.WriteChatString(m_text ?? "<text>");
                    Writer.WriteByte((byte)m_flags);
                    break;
                case ChatMessageType.Achievement:
                case ChatMessageType.GuildAchievement:
                    Writer.WriteGuid(m_targetGUID);
                    if (m_language == Language.Addon)
                        Writer.WriteCString(m_addonPrefix ?? "<prefix>");
                    Writer.WriteChatString(m_text ?? "<text>");
                    Writer.WriteByte((byte)m_flags);
                    Writer.WriteUInt32(m_achievementId);
                    break;
                case ChatMessageType.WhisperForeign:
                    Writer.WriteChatString(m_senderName ?? "<sender>");
                    Writer.WriteGuid(m_targetGUID);
                    if (m_language == Language.Addon)
                        Writer.WriteCString(m_addonPrefix ?? "<prefix>");
                    Writer.WriteChatString(m_text ?? "<text>");
                    Writer.WriteByte((byte)m_flags);
                    break;
                default:
                    if (GameMasterMessage)
                        Writer.WriteChatString(m_senderName ?? "<sender>");
                    if (m_type == ChatMessageType.Channel)
                        Writer.WriteCString(m_channel ?? "<channel>");
                    Writer.WriteGuid(m_targetGUID);
                    if (m_language == Language.Addon)
                        Writer.WriteCString(m_addonPrefix ?? "<prefix>");
                    Writer.WriteChatString(m_text ?? "<text>");
                    Writer.WriteByte((byte)m_flags);
                    break;
            }
        }
        /// <summary>
        /// Saves the current ChatMessage to a stream using a StreamHandler.
        /// </summary>
        /// <param name="Writer">
        /// Instance of StreamHandler used to save the current ChatMessage to a stream.
        /// </param>
        public override void Save(StreamHandler Writer)
        {
            Writer.WriteByte((byte)m_type);
            Writer.WriteUInt32((uint)m_language);
            Writer.WriteGuid(m_senderGUID);
            Writer.WriteUInt32(m_unknownUInt32);

            switch (m_type)
            {
            case ChatMessageType.MonsterSay:
            case ChatMessageType.MonsterParty:
            case ChatMessageType.MonsterYell:
            case ChatMessageType.MonsterWhisper:
            case ChatMessageType.MonsterEmote:
            case ChatMessageType.RaidBossEmote:
            case ChatMessageType.RaidBossWhisper:
            case ChatMessageType.BattleNet:
                Writer.WriteChatString(m_senderName ?? "<sender>");
                Writer.WriteGuid(m_targetGUID);
                if (!m_targetGUID.IsEmpty &&
                    !m_targetGUID.IsPlayer &&
                    !m_targetGUID.IsPet)
                {
                    Writer.WriteChatString(m_targetName ?? "<target>");
                }
                if (m_language == Language.Addon)
                {
                    Writer.WriteCString(m_addonPrefix ?? "<prefix>");
                }
                Writer.WriteChatString(m_text ?? "<text>");
                Writer.WriteByte((byte)m_flags);
                if (m_type == ChatMessageType.RaidBossEmote || m_type == ChatMessageType.RaidBossWhisper)
                {
                    Writer.WriteSingle(m_displayTime);
                    Writer.WriteBoolean(m_suspendEvent);
                }
                break;

            case ChatMessageType.BGSystemNeutral:
            case ChatMessageType.BGSystemAlliance:
            case ChatMessageType.BGSystemHorde:
                Writer.WriteGuid(m_targetGUID);
                if (!m_targetGUID.IsEmpty &&
                    !m_targetGUID.IsPlayer)
                {
                    Writer.WriteChatString(m_targetName);
                }
                if (m_language == Language.Addon)
                {
                    Writer.WriteCString(m_addonPrefix ?? "<prefix>");
                }
                Writer.WriteChatString(m_text ?? "<text>");
                Writer.WriteByte((byte)m_flags);
                break;

            case ChatMessageType.Achievement:
            case ChatMessageType.GuildAchievement:
                Writer.WriteGuid(m_targetGUID);
                if (m_language == Language.Addon)
                {
                    Writer.WriteCString(m_addonPrefix ?? "<prefix>");
                }
                Writer.WriteChatString(m_text ?? "<text>");
                Writer.WriteByte((byte)m_flags);
                Writer.WriteUInt32(m_achievementId);
                break;

            case ChatMessageType.WhisperForeign:
                Writer.WriteChatString(m_senderName ?? "<sender>");
                Writer.WriteGuid(m_targetGUID);
                if (m_language == Language.Addon)
                {
                    Writer.WriteCString(m_addonPrefix ?? "<prefix>");
                }
                Writer.WriteChatString(m_text ?? "<text>");
                Writer.WriteByte((byte)m_flags);
                break;

            default:
                if (GameMasterMessage)
                {
                    Writer.WriteChatString(m_senderName ?? "<sender>");
                }
                if (m_type == ChatMessageType.Channel)
                {
                    Writer.WriteCString(m_channel ?? "<channel>");
                }
                Writer.WriteGuid(m_targetGUID);
                if (m_language == Language.Addon)
                {
                    Writer.WriteCString(m_addonPrefix ?? "<prefix>");
                }
                Writer.WriteChatString(m_text ?? "<text>");
                Writer.WriteByte((byte)m_flags);
                break;
            }
        }