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); }); } }