/// <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; } }