Esempio n. 1
0
        //[Initialization(InitializationPass.Second, Name = "Misc Packet Definition")]
        public static void Init()
        {
            var msgSegment = new PacketSegment(SimpleType.CString, "Message");
            var targetMsgSegment = new ComplexPacketSegment(
                new PacketSegment(SimpleType.CString, "Target"),
                new PacketSegment(SimpleType.CString, "Message")
            );

            SwitchPacketSegment msgTypeSwitch;
            PacketAnalyzer.RegisterDefintion(new PacketDefinition(RealmServerOpCode.CMSG_MESSAGECHAT,
                msgTypeSwitch = new SwitchPacketSegment(SimpleType.UInt, "Type", (segment, parser) => {
                    parser.ParsedSegments.SetCurrentMoveNext((ChatMsgType)parser.Packet.ReadUInt32());
                    },
                    new Condition(ComparisonType.Equal, ChatMsgType.Say, msgSegment),
                    new Condition(ComparisonType.Equal, ChatMsgType.Yell, msgSegment),
                    new Condition(ComparisonType.Equal, ChatMsgType.Emote, msgSegment),
                    new Condition(ComparisonType.Equal, ChatMsgType.Party, msgSegment),
                    new Condition(ComparisonType.Equal, ChatMsgType.Raid, msgSegment),
                    new Condition(ComparisonType.Equal, ChatMsgType.RaidLeader, msgSegment),
                    new Condition(ComparisonType.Equal, ChatMsgType.RaidWarn, msgSegment),
                    new Condition(ComparisonType.Equal, ChatMsgType.Whisper, targetMsgSegment),
                    new Condition(ComparisonType.Equal, ChatMsgType.Channel, targetMsgSegment)
                ),
                new PacketSegment(SimpleType.UInt, "Language", (segment, parser) => {
                    parser.ParsedSegments.SetCurrentMoveNext((ChatLanguage)parser.Packet.ReadUInt32());
                }),
                new ConditionalPacketSegment(msgTypeSwitch)
            ));
        }
Esempio n. 2
0
        //[Initialization(InitializationPass.Second, Name = "Misc Packet Definition")]
        public static void Init()
        {
            var msgSegment       = new PacketSegment(SimpleType.CString, "Message");
            var targetMsgSegment = new ComplexPacketSegment(
                new PacketSegment(SimpleType.CString, "Target"),
                new PacketSegment(SimpleType.CString, "Message")
                );

            SwitchPacketSegment msgTypeSwitch;

            PacketAnalyzer.RegisterDefintion(new PacketDefinition(RealmServerOpCode.CMSG_MESSAGECHAT,
                                                                  msgTypeSwitch = new SwitchPacketSegment(SimpleType.UInt, "Type", (segment, parser) => {
                parser.ParsedSegments.SetCurrentMoveNext((ChatMsgType)parser.Packet.ReadUInt32());
            },
                                                                                                          new Condition(ComparisonType.Equal, ChatMsgType.Say, msgSegment),
                                                                                                          new Condition(ComparisonType.Equal, ChatMsgType.Yell, msgSegment),
                                                                                                          new Condition(ComparisonType.Equal, ChatMsgType.Emote, msgSegment),
                                                                                                          new Condition(ComparisonType.Equal, ChatMsgType.Party, msgSegment),
                                                                                                          new Condition(ComparisonType.Equal, ChatMsgType.Raid, msgSegment),
                                                                                                          new Condition(ComparisonType.Equal, ChatMsgType.RaidLeader, msgSegment),
                                                                                                          new Condition(ComparisonType.Equal, ChatMsgType.RaidWarn, msgSegment),
                                                                                                          new Condition(ComparisonType.Equal, ChatMsgType.Whisper, targetMsgSegment),
                                                                                                          new Condition(ComparisonType.Equal, ChatMsgType.Channel, targetMsgSegment)
                                                                                                          ),
                                                                  new PacketSegment(SimpleType.UInt, "Language", (segment, parser) => {
                parser.ParsedSegments.SetCurrentMoveNext((ChatLanguage)parser.Packet.ReadUInt32());
            }),
                                                                  new ConditionalPacketSegment(msgTypeSwitch)
                                                                  ));
        }
        public void Clear()
        {
            PacketSegment n = m_segments;

            while (n != null)
            {
                n.m_buffer = null;

                n = n.m_next;
            }

            m_segments = null;
        }
        public System.Collections.IEnumerator GetEnumerator()
        {
            PacketSegment n = m_segments;

            while (n != null)
            {
                for (int i = 0; i < n.m_count; ++i)
                {
                    yield return(n.m_buffer[i]);
                }

                n = n.m_next;
            }
        }
Esempio n. 5
0
        private void AllocSegment()
        {
            PacketSegment n = new PacketSegment();

            n.m_count  = 0;
            n.m_buffer = new Packet[m_capacity];
            if (m_segments != null)
            {
                m_segments.m_next = n;
            }
            else
            {
                m_segments = n;
            }
        }
Esempio n. 6
0
        private void AllocSegment()
        {
            PacketSegment n = new PacketSegment();

            n.m_count  = 0;
            n.m_buffer = new Packet[m_capacity];
            for (int i = 0; i < m_capacity; ++i)
            {
                n.m_buffer[i] = new Packet();
            }

            if (m_segments != null)
            {
                m_segments.m_next = n;
            }

            m_segments = n;
        }