SetId() public method

public SetId ( int id ) : void
id int
return void
        private void OnSelectEffectYn(GameServerPacket packet)
        {
            packet.ReadByte();             // player

            int          cardId = packet.ReadInt32();
            int          player = GetLocalPlayer(packet.ReadByte());
            CardLocation loc    = (CardLocation)packet.ReadByte();
            int          seq    = packet.ReadByte();

            packet.ReadByte();

            ClientCard card = _duel.GetCard(player, loc, seq);

            if (card == null)
            {
                Connection.Send(CtosMessage.Response, 0);
                return;
            }

            if (card.Id == 0)
            {
                card.SetId(cardId);
            }

            int reply = _ai.OnSelectEffectYn(card) ? (1) : (0);

            Connection.Send(CtosMessage.Response, reply);
        }
        private void OnSelectSum(GameServerPacket packet)
        {
            packet.ReadByte();             // mode
            packet.ReadByte();             // player
            int sumval = packet.ReadInt32();
            int min    = packet.ReadByte();
            int max    = packet.ReadByte();

            IList <ClientCard> cards = new List <ClientCard>();
            int count = packet.ReadByte();

            for (int i = 0; i < count; ++i)
            {
                int          cardId = packet.ReadInt32();
                int          player = GetLocalPlayer(packet.ReadByte());
                CardLocation loc    = (CardLocation)packet.ReadByte();
                int          seq    = packet.ReadByte();
                ClientCard   card   = _duel.GetCard(player, loc, seq);
                if (card != null)
                {
                    if (cardId != 0 && card.Id != cardId)
                    {
                        card.SetId(cardId);
                    }
                    cards.Add(card);
                }
                packet.ReadInt32();
            }

            IList <ClientCard> selected = _ai.OnSelectSum(cards, sumval, min, max);

            byte[] result = new byte[selected.Count + 1];
            result[0] = (byte)selected.Count;
            for (int i = 0; i < selected.Count; ++i)
            {
                int id = 0;
                for (int j = 0; j < count; ++j)
                {
                    if (cards[j] == null)
                    {
                        continue;
                    }
                    if (cards[j].Equals(selected[i]))
                    {
                        id = j;
                        break;
                    }
                }
                result[i + 1] = (byte)id;
            }

            GameClientPacket reply = new GameClientPacket(CtosMessage.Response);

            reply.Write(result);
            Connection.Send(reply);
        }
コード例 #3
0
        public void AddCard(CardLocation loc, ClientCard card, int player, int seq, int pos, int id)
        {
            card.Location   = loc;
            card.Sequence   = seq;
            card.Position   = pos;
            card.Controller = player;
            card.SetId(id);
            switch (loc)
            {
            case CardLocation.Hand:
                Fields[player].Hand.Add(card);
                break;

            case CardLocation.Grave:
                Fields[player].Graveyard.Add(card);
                break;

            case CardLocation.Removed:
                Fields[player].Banished.Add(card);
                break;

            case CardLocation.MonsterZone:
                Fields[player].MonsterZone[seq] = card;
                break;

            case CardLocation.SpellZone:
                Fields[player].SpellZone[seq] = card;
                break;

            case CardLocation.Deck:
                Fields[player].Deck.Add(card);
                break;

            case CardLocation.Extra:
                Fields[player].ExtraDeck.Add(card);
                break;
            }
        }
コード例 #4
0
        private void OnSelectSum(BinaryReader packet)
        {
            bool mode = packet.ReadByte() == 0;

            packet.ReadByte(); // player
            int sumval = packet.ReadInt32();
            int min    = packet.ReadByte();
            int max    = packet.ReadByte();

            IList <ClientCard> mandatoryCards = new List <ClientCard>();
            IList <ClientCard> cards          = new List <ClientCard>();

            for (int j = 0; j < 2; ++j)
            {
                int count = packet.ReadByte();
                for (int i = 0; i < count; ++i)
                {
                    int          cardId = packet.ReadInt32();
                    int          player = GetLocalPlayer(packet.ReadByte());
                    CardLocation loc    = (CardLocation)packet.ReadByte();
                    int          seq    = packet.ReadByte();
                    ClientCard   card   = _duel.GetCard(player, loc, seq);
                    if (cardId != 0 && card.Id != cardId)
                    {
                        card.SetId(cardId);
                    }
                    card.SelectSeq = i;
                    int OpParam  = packet.ReadInt32();
                    int OpParam1 = OpParam & 0xffff;
                    int OpParam2 = OpParam >> 16;
                    if (OpParam2 > 0 && OpParam1 > OpParam2)
                    {
                        card.OpParam1 = OpParam2;
                        card.OpParam2 = OpParam1;
                    }
                    else
                    {
                        card.OpParam1 = OpParam1;
                        card.OpParam2 = OpParam2;
                    }
                    if (j == 0)
                    {
                        mandatoryCards.Add(card);
                    }
                    else
                    {
                        cards.Add(card);
                    }
                }
            }

            for (int k = 0; k < mandatoryCards.Count; ++k)
            {
                sumval -= mandatoryCards[k].OpParam1;
            }

            IList <ClientCard> selected = _ai.OnSelectSum(cards, sumval, min, max, mode);

            byte[] result = new byte[mandatoryCards.Count + selected.Count + 1];
            int    index  = 0;

            result[index++] = (byte)(mandatoryCards.Count + selected.Count);
            while (index <= mandatoryCards.Count)
            {
                result[index++] = 0;
            }
            for (int i = 0; i < selected.Count; ++i)
            {
                result[index++] = (byte)selected[i].SelectSeq;
            }

            BinaryWriter reply = GamePacketFactory.Create(CtosMessage.Response);

            reply.Write(result);
            Connection.Send(reply);
        }
コード例 #5
0
ファイル: GameBehavior.cs プロジェクト: yesicant/windbot
        private void OnSelectSum(BinaryReader packet)
        {
            packet.ReadByte(); // mode
            packet.ReadByte(); // player
            int sumval = packet.ReadInt32();
            int min    = packet.ReadByte();
            int max    = packet.ReadByte();

            IList <ClientCard> mandatoryCards = new List <ClientCard>();
            IList <ClientCard> cards          = new List <ClientCard>();

            for (int j = 0; j < 2; ++j)
            {
                int count = packet.ReadByte();
                for (int i = 0; i < count; ++i)
                {
                    int          cardId = packet.ReadInt32();
                    int          player = GetLocalPlayer(packet.ReadByte());
                    CardLocation loc    = (CardLocation)packet.ReadByte();
                    int          seq    = packet.ReadByte();
                    ClientCard   card   = _duel.GetCard(player, loc, seq);
                    if (card != null)
                    {
                        if (cardId != 0 && card.Id != cardId)
                        {
                            card.SetId(cardId);
                        }
                    }
                    if (j == 0)
                    {
                        mandatoryCards.Add(card);
                    }
                    else
                    {
                        cards.Add(card);
                    }
                    packet.ReadInt32();
                }
            }

            IList <ClientCard> selected = _ai.OnSelectSum(cards, sumval, min, max);

            byte[] result = new byte[mandatoryCards.Count + selected.Count + 1];
            int    index  = 0;

            result[index++] = (byte)(mandatoryCards.Count + selected.Count);
            while (index < mandatoryCards.Count)
            {
                result[index++] = 0;
            }
            for (int i = 0; i < selected.Count; ++i)
            {
                int id = 0;
                for (int j = 0; j < cards.Count; ++j)
                {
                    if (cards[j] == null)
                    {
                        continue;
                    }
                    if (cards[j].Equals(selected[i]))
                    {
                        id = j;
                        break;
                    }
                }
                result[index++] = (byte)id;
            }

            BinaryWriter reply = GamePacketFactory.Create(CtosMessage.Response);

            reply.Write(result);
            Connection.Send(reply);
        }