public ReturnStatus MoveCardToDefenseField(int cardId) { Carta card = this.AtackField.FirstOrDefault(c => c.Id == cardId); if (card == null) { return(new ReturnStatus(EnumResult.Error, "Invalid card")); } if (!card.CanBeMoved) { return(new ReturnStatus(EnumResult.Error, "Card can't be moved")); } this.DefenseField.Add(card); this.AtackField.Remove(card); card.CanBeMoved = false; return(new ReturnStatus(EnumResult.Ok)); }
public ReturnStatus PutCardInField(int cardId) { Carta card = this.Hands.FirstOrDefault(c => c.Id == cardId); if (card == null) { return(new ReturnStatus(EnumResult.Error, "Invalid Card")); } if (this.ManaCurrent < card.Custo) { return(new ReturnStatus(EnumResult.Error, "Insuficcient Mana")); } this.DefenseField.Add(card); this.Hands.Remove(card); this.ManaCurrent = this.ManaCurrent - card.Custo; card.CanBeMoved = false; return(new ReturnStatus(EnumResult.Ok)); }
public BattleFightResult(Carta Atacker, List <Carta> Defenders, int PlayerLifeDamage) { this.Atacker = Atacker; this.Defender = Defenders; this.PlayerLifeDamage = PlayerLifeDamage; }
public BattleFight(Carta AttackerCard, List <Carta> DefenderCards) { this.Attacker = AttackerCard; this.Defenders = DefenderCards; }
public BattleFightResult(Carta Atacker, List<Carta> Defenders, int PlayerLifeDamage) { this.Atacker = Atacker; this.Defender = Defenders; this.PlayerLifeDamage = PlayerLifeDamage; }
public BattleFight(Carta AttackerCard, List<Carta> DefenderCards) { this.Attacker = AttackerCard; this.Defenders = DefenderCards; }
public List <Carta> PrepareAttack() { List <Carta> Attackers = new List <Carta>(); var AllMyCards = this.Player.AtackField; AllMyCards.AddRange(this.Player.DefenseField); var minimunSafeLife = 0; try { this.Opponent.DefenseField.Max(x => x.Ataque); } catch { minimunSafeLife = 0; } if (HasLessCardsThanOpponentInField()) { AllMyCards.ForEach(c => { if (c.CanBeMoved && c.Defesa >= minimunSafeLife) { Attackers.Add(c); } }); //Attackers.AddRange(this.Player.AtackField.Where(x => x.Defesa >= minimunSafeLife)); } else { int neededDPower = (Opponent.AtackField.Count() > 0)?Opponent.AtackField.Max(x => x.Defesa):0; int ExcessOffense = GetMyCardsCount() - GetOpponentCardsCount(); int oponnentMaxDefense = (Opponent.DefenseField.Count() > 0)?Opponent.DefenseField.Max(x => x.Defesa) : 0; if (oponnentMaxDefense > neededDPower) { neededDPower = Opponent.DefenseField.Max(x => x.Defesa); } var DefenseSafetyGroup = AllMyCards.Where(x => x.Ataque >= neededDPower).ToList(); Carta StrongDefender = new Carta(); if (DefenseSafetyGroup.Count > 0) { StrongDefender = DefenseSafetyGroup.OrderBy(x => x.Ataque).First(); } AllMyCards.ForEach(c => { if (c.CanBeMoved && c.Defesa >= minimunSafeLife && !c.Equals(StrongDefender)) { Attackers.Add(c); } }); var OrdedByLife = AllMyCards.Where(c => !Attackers.Contains(c) && !c.Equals(StrongDefender)).OrderBy(c => c.Defesa).ToList(); var count = 0; while (AllMyCards.Count < (ExcessOffense - count)) { try { Attackers.Add(OrdedByLife[count]); count++; } catch { break; } } } return(Attackers); }
public List<Carta> PrepareAttack() { List<Carta> Attackers = new List<Carta>(); var AllMyCards = this.Player.AtackField; AllMyCards.AddRange(this.Player.DefenseField); var minimunSafeLife = 0; try { this.Opponent.DefenseField.Max(x => x.Ataque); } catch { minimunSafeLife = 0; } if (HasLessCardsThanOpponentInField()) { AllMyCards.ForEach(c => { if (c.CanBeMoved && c.Defesa >= minimunSafeLife) { Attackers.Add(c); } }); //Attackers.AddRange(this.Player.AtackField.Where(x => x.Defesa >= minimunSafeLife)); } else { int neededDPower = (Opponent.AtackField.Count() > 0)?Opponent.AtackField.Max(x => x.Defesa):0; int ExcessOffense = GetMyCardsCount() - GetOpponentCardsCount(); int oponnentMaxDefense = (Opponent.DefenseField.Count() > 0)?Opponent.DefenseField.Max(x => x.Defesa) : 0; if (oponnentMaxDefense > neededDPower) neededDPower = Opponent.DefenseField.Max(x => x.Defesa); var DefenseSafetyGroup = AllMyCards.Where(x => x.Ataque >= neededDPower).ToList(); Carta StrongDefender = new Carta(); if (DefenseSafetyGroup.Count > 0) { StrongDefender = DefenseSafetyGroup.OrderBy(x => x.Ataque).First(); } AllMyCards.ForEach(c => { if (c.CanBeMoved && c.Defesa >= minimunSafeLife && !c.Equals(StrongDefender)) { Attackers.Add(c); } }); var OrdedByLife = AllMyCards.Where(c => !Attackers.Contains(c) && !c.Equals(StrongDefender)).OrderBy(c => c.Defesa).ToList(); var count = 0; while (AllMyCards.Count < (ExcessOffense-count)) { try { Attackers.Add(OrdedByLife[count]); count++; } catch { break; } } } return Attackers; }