public override Damage GetDamage(Player owner, Player opponent, GameField game) { var attacks = opponent.ActivePokemonCard.Attacks; if (attacks.Count == 1) { chosenAttack = attacks[0]; } else { var attackMessage = new SelectAttackMessage(opponent.ActivePokemonCard.Attacks.ToList()).ToNetworkMessage(owner.Id); chosenAttack = owner.NetworkPlayer.SendAndWaitForResponse <AttackMessage>(attackMessage).Attack; } return(chosenAttack.GetDamage(owner, opponent, game)); }
public override void ProcessEffects(GameField game, Player owner, Player opponent) { if (opponent.ActivePokemonCard.Attacks.Count == 1) { opponent.ActivePokemonCard.Attacks[0].Disabled = true; game.GameLog.AddMessage($"{owner.NetworkPlayer?.Name} disables attack {opponent.ActivePokemonCard.Attacks[0].Name}"); return; } var attackMessage = new SelectAttackMessage(opponent.ActivePokemonCard.Attacks.ToList()).ToNetworkMessage(owner.Id); var chosenAttack = owner.NetworkPlayer.SendAndWaitForResponse <AttackMessage>(attackMessage).Attack; game.GameLog.AddMessage($"{owner.NetworkPlayer?.Name} disables attack {chosenAttack.Name}"); opponent.ActivePokemonCard.Attacks.First(x => x.Id.Equals(chosenAttack.Id)).Disabled = true; base.ProcessEffects(game, owner, opponent); }
public void SelectAttackMessage() { var message = new SelectAttackMessage(new List <Attack>(new List <Attack>())); Assert.NotNull(SerializeAndBack(message)); }