コード例 #1
0
ファイル: Misc.cs プロジェクト: NecroSharper/WCell
        //[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)
                                                                  ));
        }
コード例 #2
0
ファイル: Spells.cs プロジェクト: NecroSharper/WCell
        //[Initialization(InitializationPass.Second, Name = "Spell Packet Definition")]
        public static void Init()
        {
            PacketAnalyzer.RegisterDefintion(new PacketDefinition(RealmServerOpCode.CMSG_CAST_SPELL,
                                                                  new PacketSegment(SimpleType.UInt, "SpellId", SpellIdParser)
                                                                  ));

            PacketAnalyzer.RegisterDefintion(new PacketDefinition(RealmServerOpCode.CMSG_CANCEL_CAST,
                                                                  new PacketSegment(SimpleType.UInt, "SpellId", SpellIdParser)
                                                                  ));
        }
コード例 #3
0
        public void TestSavingAndLoading()
        {
            var def = new PacketDefinition(RealmServerOpCode.CMSG_SET_CHANNEL_WATCH, PacketSender.Client, new List <PacketSegmentStructure>());

            PacketAnalyzer.RegisterDefintion(def);

            var def2 = PacketAnalyzer.GetDefinition(RealmServerOpCode.CMSG_SET_CHANNEL_WATCH, PacketSender.Client);

            Assert.AreEqual(def, def2);


            def = new PacketDefinition(RealmServerOpCode.CMSG_SET_CHANNEL_WATCH, PacketSender.Any, new List <PacketSegmentStructure>());
            PacketAnalyzer.RegisterDefintion(def);

            def2 = PacketAnalyzer.GetDefinition(RealmServerOpCode.CMSG_SET_CHANNEL_WATCH, PacketSender.Server);
            Assert.AreEqual(def, def2);
        }