Exemple #1
0
    public virtual void OnFightCreature(NetworkMessage netMsg)
    {
        var msg = netMsg.ReadMessage <FightCreatureMessage>();

        if (msg != null)
        {
            // Only the current player can fight.
            if (netMsg.conn.connectionId != server.gameState.currentPlayer.connectionId)
            {
                return;
            }

            var creatureAttackedMsg = new CreatureAttackedMessage();
            creatureAttackedMsg.attackingPlayerNetId    = msg.attackingPlayerNetId;
            creatureAttackedMsg.attackingCardInstanceId = msg.attackingCardInstanceId;
            creatureAttackedMsg.attackedCardInstanceId  = msg.attackedCardInstanceId;
            server.SafeSendToClient(server.gameState.currentOpponent, NetworkProtocol.CreatureAttacked, creatureAttackedMsg);

            var attackingCard = server.gameState.currentPlayer.namedZones["Board"].cards.Find(x => x.instanceId == msg.attackingCardInstanceId);
            var attackedCard  = server.gameState.currentOpponent.namedZones["Board"].cards.Find(x => x.instanceId == msg.attackedCardInstanceId);
            if (attackingCard != null && attackedCard != null)
            {
                server.effectSolver.FightCreature(msg.attackingPlayerNetId, attackingCard, attackedCard);
            }
        }
    }
    public override void OnCreatureAttacked(CreatureAttackedMessage msg)
    {
        base.OnCreatureAttacked(msg);
        var attackingCard = opponentBoardCards.Find(x => x.card.instanceId == msg.attackingCardInstanceId);
        var attackedCard  = playerBoardCards.Find(x => x.card.instanceId == msg.attackedCardInstanceId);

        if (attackingCard != null && attackedCard != null)
        {
            CombatAnimation.PlayFightAnimation(attackingCard.gameObject, attackedCard.gameObject, 0.5f, () =>
            {
                effectSolver.FightCreature(msg.attackingPlayerNetId, attackingCard.card, attackedCard.card);
            });
        }
    }