private void OnSelectPosition(GameServerPacket packet)
        {
            packet.ReadByte();             // player
            int cardId = packet.ReadInt32();
            int pos    = packet.ReadByte();

            if (pos == 0x1 || pos == 0x2 || pos == 0x4 || pos == 0x8)
            {
                Connection.Send(CtosMessage.Response, pos);
                return;
            }
            IList <CardPosition> positions = new List <CardPosition>();

            if ((pos & (int)CardPosition.FaceUpAttack) != 0)
            {
                positions.Add(CardPosition.FaceUpAttack);
            }
            if ((pos & (int)CardPosition.FaceDownAttack) != 0)
            {
                positions.Add(CardPosition.FaceDownAttack);
            }
            if ((pos & (int)CardPosition.FaceUpDefence) != 0)
            {
                positions.Add(CardPosition.FaceUpDefence);
            }
            if ((pos & (int)CardPosition.FaceDownDefence) != 0)
            {
                positions.Add(CardPosition.FaceDownDefence);
            }
            Connection.Send(CtosMessage.Response, (int)_ai.OnSelectPosition(cardId, positions));
        }