Ejemplo n.º 1
0
        void OnPlayCard(Player player, CBPlayCard msg)
        {
            if (m_whosTurn != player)
            {
                Logger.LogError("{0}\t出牌,但不是他的回合,已禁止!", player.name);
                return;
            }

            if (m_isThisTrunPlayedCard)
            {
                return;
            }

            m_isThisTrunPlayedCard = true;

            var card = GetCard(msg.CardID);

            player.RemoveCard(card);
            var target = GetPlayer(msg.TargetID);


            if (msg.Extend > 0)
            {
                if (target != null)
                {
                    Logger.Log("{0}\t出牌\t{1}\t指向\t{2}\tExt\t{3}", player.name, card.table.effect, target.name, msg.Extend);
                }
                else
                {
                    Logger.Log("{0}\t出牌\t{1}\tExt\t{2}", player.name, card.table.effect, msg.Extend);
                }
            }
            else
            {
                if (target != null)
                {
                    Logger.Log("{0}\t出牌\t{1}\t指向\t{2}", player.name, card.table.effect, target.name);
                }
                else
                {
                    Logger.Log("{0}\t出牌\t{1}", player.name, card.table.effect);
                }
            }

            CBPlayCardSync sync = new CBPlayCardSync();

            sync.FromID   = player.id;
            sync.TargetID = msg.TargetID;
            sync.CardID   = card.id;
            sync.Extend   = msg.Extend;
            SendToAll(sync);

            float waitFor = CardEffectLogic(player, target, card, msg.Extend);

            Task.WaitFor(waitFor, () =>
            {
                TurnNextAndSendCard();
            });
        }
Ejemplo n.º 2
0
        void OnPlayCardSync(CBPlayCardSync msg)
        {
            var card   = room.GetCard(msg.CardID);
            var player = room.GetPlayer(msg.FromID);

            player.RemoveCard(card);

            SendEvent(EventDef.SOS.PlayCard, msg);
        }