Пример #1
0
 private void OnPosChange(GamePacketReader packet)
 {
     packet.ReadInt32(); // card id
     int pc = GetLocalPlayer(packet.ReadByte());
     int pl = packet.ReadByte();
     int ps = packet.ReadSByte();
     packet.ReadSByte(); // pp
     int cp = packet.ReadSByte();
     ClientCard card = _duel.GetCard(pc, (CardLocation)pl, ps);
     if (card != null)
         card.Position = cp;
 }
Пример #2
0
 private void OnChaining(GamePacketReader packet)
 {
     packet.ReadInt32(); // card id
     int pcc = GetLocalPlayer(packet.ReadByte());
     int pcl = packet.ReadByte();
     int pcs = packet.ReadSByte();
     int subs = packet.ReadSByte();
     ClientCard card = _duel.GetCard(pcc, pcl, pcs, subs);
     int cc = GetLocalPlayer(packet.ReadByte());
     _ai.OnChaining(card, cc);
 }
Пример #3
0
        private void OnMove(GamePacketReader packet)
        {
            int cardId = packet.ReadInt32();
            int pc = GetLocalPlayer(packet.ReadByte());
            int pl = packet.ReadByte();
            int ps = packet.ReadSByte();
            packet.ReadSByte(); // pp
            int cc = GetLocalPlayer(packet.ReadByte());
            int cl = packet.ReadByte();
            int cs = packet.ReadSByte();
            int cp = packet.ReadSByte();
            packet.ReadInt32(); // reason

            ClientCard card = _duel.GetCard(pc, (CardLocation)pl, ps);

            if ((pl & (int)CardLocation.Overlay) != 0)
            {
                pl = pl & 0x7f;
                card = _duel.GetCard(pc, (CardLocation)pl, ps);
                if (card != null)
                    card.Overlays.Remove(cardId);
            }
            else
                _duel.RemoveCard((CardLocation)pl, card, pc, ps);

            if ((cl & (int)CardLocation.Overlay) != 0)
            {
                cl = cl & 0x7f;
                card = _duel.GetCard(cc, (CardLocation)cl, cs);
                if (card != null)
                    card.Overlays.Add(cardId);
            }
            else
            {
                _duel.AddCard((CardLocation)cl, cardId, cc, cs, cp);
                if ((pl & (int)CardLocation.Overlay) == 0 && card != null)
                {
                    ClientCard newcard = _duel.GetCard(cc, (CardLocation)cl, cs);
                    if (newcard != null)
                        newcard.Overlays.AddRange(card.Overlays);
                }
            }
        }