void EnemyTurn(List <CardInfoScr> cards) { int count = cards.Count == 1 ? 1 : Random.Range(0, cards.Count); for (int i = 0; i < count; i++) { if (EnemyFieldCards.Count > 5) { return; } cards[0].ShowCardInfo(cards[0].SelfCard, false); cards[0].transform.SetParent(EnemyField); EnemyFieldCards.Add(cards[0]); EnemyHandCards.Remove(cards[0]); } foreach (var activeCard in EnemyFieldCards.FindAll(x => x.SelfCard.CanAttack)) { if (PlayerFieldCards.Count == 0) { return; } var enemy = PlayerFieldCards[Random.Range(0, PlayerFieldCards.Count)]; Debug.Log(activeCard.SelfCard.Name + " (" + activeCard.SelfCard.Attack + ";" + activeCard.SelfCard.Defense + ") " + "---> " + enemy.SelfCard.Name + " (" + enemy.SelfCard.Attack + ";" + enemy.SelfCard.Defense + ")"); activeCard.SelfCard.ChangeAttackState(false); CardsFight(enemy, activeCard); } }
public void RestartGame() { StopAllCoroutines(); foreach (var card in PlayerHandCards) { Destroy(card.gameObject); } foreach (var card in PlayerFieldCards) { Destroy(card.gameObject); } foreach (var card in EnemyHandCards) { Destroy(card.gameObject); } foreach (var card in EnemyFieldCards) { Destroy(card.gameObject); } PlayerHandCards.Clear(); PlayerFieldCards.Clear(); EnemyHandCards.Clear(); EnemyFieldCards.Clear(); StartGame(); }
public void HighlightTargets(bool highlight, Card activeCard) { List <CardController> targets = new List <CardController>(); if (activeCard.IsSpell) { var spellCard = (SpellCard)activeCard; if (spellCard.SpellTarget == SpellCard.TargetType.NO_TARGET) { targets = new List <CardController>(); } if (spellCard.SpellTarget == SpellCard.TargetType.ALLY_CARD_TARGET) { targets = PlayerFieldCards; } if (spellCard.SpellTarget == SpellCard.TargetType.ENEMY_CARD_TARGET) { targets = EnemyFieldCards; } } else { if (EnemyFieldCards.Exists(x => x.Card.IsProvocation)) { targets = EnemyFieldCards.FindAll(x => x.Card.IsProvocation); } else { targets = EnemyFieldCards; } } foreach (var card in targets) { if (activeCard.IsSpell) { card.Info.HighlightAsSpellTarget(highlight); } else { card.Info.HighlightAsTarget(highlight); } } if ((EnemyFieldCards.Count == 0 || activeCard.Ranged) && !activeCard.IsSpell) { EnemyHero.HighlightAsTarget(highlight); } }
public void DestroyCard(CardInfoScr card) { card.GetComponent <CardMovementScr>().OnEndDrag(null); if (EnemyFieldCards.Exists(x => x == card)) { EnemyFieldCards.Remove(card); } if (PlayerFieldCards.Exists(x => x == card)) { PlayerFieldCards.Remove(card); } Destroy(card.gameObject); }
public void HighlightTargets(CardController attacker, bool highlight) { List <CardController> targets = new List <CardController>(); if (attacker.Card.IsSpell) { var spellCard = (SpellCard)attacker.Card; if (spellCard.SpellTarget == SpellCard.TargetType.NO_TARGET) { targets = new List <CardController>(); } else if (spellCard.SpellTarget == SpellCard.TargetType.ALLY_CARD_TARGET) { targets = PlayerFieldCards; } else { targets = EnemyFieldCards; } } else { if (EnemyFieldCards.Exists(x => x.Card.IsProvocation)) { targets = EnemyFieldCards.FindAll(x => x.Card.IsProvocation); } else { targets = EnemyFieldCards; if (!attacker.Card.IsSpell) { EnemyHero.HighlightAsTarget(highlight); } } } foreach (var card in targets) { if (attacker.Card.IsSpell) { card.Info.HighlightAsSpellTarget(highlight); } else { card.Info.HighlightAsTarget(highlight); } } }
void DestroyCard(CardInfoScript card) { card.GetComponent <CardMovementScript>().OnEndDrag(null); // для снятия прототипа карты с поля if (PlayerFieldCards.Exists(x => x == card)) //карта на поле игрока { PlayerFieldCards.Remove(card); } else /*if (EnemyFieldCards.Exists(x => x == card))*/ // поле соперника { EnemyFieldCards.Remove(card); } Destroy(card.gameObject); }
void EnemyTurn(List <CardInfoScr> cards) { int count = cards.Count == 1 ? 1 : Random.Range(0, cards.Count); for (int i = 0; i < count; i++) { if (EnemyFieldCards.Count > 5 || EnemyMana == 0) { break; } List <CardInfoScr> cardList = cards.FindAll(x => EnemyMana >= x.SelfCard.Manacost); if (cardList.Count == 0) { break; } ReduceMana(false, cardList[0].SelfCard.Manacost); cardList[0].ShowCardInfo(cardList[0].SelfCard, false); cardList[0].transform.SetParent(EnemyField); EnemyFieldCards.Add(cardList[0]); EnemyFieldCards.Remove(cardList[0]); } foreach (var activeCard in EnemyFieldCards.FindAll(x => x.SelfCard.CanAttack)) { if (Random.Range(0, 2) == 0 && PlayerFieldCards.Count > 0) { var enemy = PlayerFieldCards[Random.Range(0, PlayerFieldCards.Count)]; Debug.Log(activeCard.SelfCard.Name + " (" + activeCard.SelfCard.Attack + ";" + activeCard.SelfCard.Defense + ") " + "---->" + enemy.SelfCard.Name + " (" + enemy.SelfCard.Attack + ";" + enemy.SelfCard.Defense + ")"); activeCard.SelfCard.ChangeAttackState(false); CardsFight(enemy, activeCard); } else { Debug.Log(activeCard.SelfCard.Name + " (" + activeCard.SelfCard.Attack + ") Attacked Hero"); activeCard.SelfCard.ChangeAttackState(false); DamageHero(activeCard, false); } } }
void EnemyTurn(List <CardInfoScript> cards) { int count = Random.Range(0, cards.Count + 1); for (int i = 0; i < count; i++) //выставление карт соперником для проверки { if (EnemyFieldCards.Count > 5 /*баг с выкладыванием бльшего кол-ва карт*/ || EnemyEnergy == 0) { break; } List <CardInfoScript> cardsList = cards.FindAll(x => EnemyEnergy >= x.SelfCard.Cost); //карты с подходящей ценой в руке if (cardsList.Count == 0) { break; } ReduceEnergy(false, cardsList[0].SelfCard.Cost); cardsList[0].ShowCardInfo(cardsList[0].SelfCard, false); cardsList[0].transform.SetParent(EnemyField); EnemyFieldCards.Add(cardsList[0]); EnemyHandCards.Remove(cardsList[0]); } foreach (var activeCard in EnemyFieldCards.FindAll(x => x.SelfCard.CanAttack)) // атака соперником для проверки { if (Random.Range(0, 2) == 0 && PlayerFieldCards.Count > 0) { var enemy = PlayerFieldCards[Random.Range(0, PlayerFieldCards.Count)]; Debug.Log(activeCard.SelfCard.Name); activeCard.SelfCard.ChangeAttackState(false); CardsFight(enemy, activeCard); } else { activeCard.SelfCard.ChangeAttackState(false); DamageHero(activeCard, false); } } }
private void EnemyTurn(List <CardInfoScr> cards) { int count = Random.Range(0, cards.Count - 1); for (int i = 0; i < count; i++) { if (EnemyFieldCards.Count > 5) { return; } else { CardInfoScr currentCard = cards[0]; currentCard.ShowCardInfo(cards[0].SelfCard, false); currentCard.transform.SetParent(enemyField); EnemyHandCards.Remove(currentCard); EnemyFieldCards.Add(currentCard); } } }
IEnumerator EnemyTurn(List <CardInfoScr> cards) { yield return(new WaitForSeconds(1)); int count = cards.Count == 1 ? 1 : Random.Range(0, cards.Count); for (int i = 0; i < count; i++) { if (EnemyFieldCards.Count > 3 || EnemyHandCards.Count == 0) { break; //Огранчение до 4 карт на поле } cards[0].GetComponent <CardMovementScr>().MoveToField(EnemyField); yield return(new WaitForSeconds(.31f)); cards[0].ShowCardInfo(cards[0].SelfCard, false); cards[0].transform.SetParent(EnemyField); EnemyFieldCards.Add(cards[0]); EnemyHandCards.Remove(cards[0]); } yield return(new WaitForSeconds(1)); foreach (var activeCard in EnemyFieldCards.FindAll(x => x.SelfCard.CanAttack)) { if (Random.Range(0, 2) == 0 && PlayerFieldCards.Count > 0) { if (PlayerFieldCards.Count == 0) { break; } var enemy = PlayerFieldCards[Random.Range(0, PlayerFieldCards.Count)]; activeCard.SelfCard.ChangeAttackState(false); activeCard.GetComponent <CardMovementScr>().MoveToTarget(enemy.transform); yield return(new WaitForSeconds(.5f)); CardsFight(enemy, activeCard); } else { activeCard.SelfCard.ChangeAttackState(false); activeCard.GetComponent <CardMovementScr>().MoveToTarget(PlayerHero.transform); yield return(new WaitForSeconds(.5f)); DamageHero(activeCard, false); } yield return(new WaitForSeconds(.2f)); // 0.2 секунды перед новой анимацией } yield return(new WaitForSeconds(1)); ChangeTurn(); }
IEnumerator EnemyTurn(List <CardController> cards) { yield return(new WaitForSeconds(1)); int count = cards.Count == 1 ? 1 : Random.Range(0, cards.Count); for (int i = 0; i < count; i++) { if (EnemyFieldCards.Count > 5 || EnemyMana == 0 || EnemyHandCards.Count == 0) { break; } List <CardController> cardsList = cards.FindAll(x => EnemyMana >= x.Card.Manacost && !x.Card.IsSpell); if (cardsList.Count == 0) { break; } cardsList[0].GetComponent <CardMovementScr>().MoveToField(EnemyField); yield return(new WaitForSeconds(.51f)); cardsList[0].transform.SetParent(EnemyField); cardsList[0].OnCast(); } yield return(new WaitForSeconds(1)); while (EnemyFieldCards.Exists(x => x.Card.CanAttack)) { var activeCard = EnemyFieldCards.FindAll(x => x.Card.CanAttack)[0]; bool hasProvocation = PlayerFieldCards.Exists(x => x.Card.IsProvocation); if (hasProvocation || Random.Range(0, 2) == 0 && PlayerFieldCards.Count > 0) { CardController enemy; if (hasProvocation) { enemy = PlayerFieldCards.Find(x => x.Card.IsProvocation); } else { enemy = PlayerFieldCards[Random.Range(0, PlayerFieldCards.Count)]; } Debug.Log(activeCard.Card.Name + " (" + activeCard.Card.Attack + ";" + activeCard.Card.Defense + ") " + "---> " + enemy.Card.Name + " (" + enemy.Card.Attack + ";" + enemy.Card.Defense + ")"); activeCard.Movement.MoveToTarget(enemy.transform); yield return(new WaitForSeconds(.75f)); CardsFight(activeCard, enemy); } else { Debug.Log(activeCard.Card.Name + " (" + activeCard.Card.Attack + ") Attacked hero"); activeCard.GetComponent <CardMovementScr>().MoveToTarget(PlayerHero.transform); yield return(new WaitForSeconds(.75f)); DamageHero(activeCard, false); } yield return(new WaitForSeconds(.2f)); } yield return(new WaitForSeconds(1)); ChangeTurn(); }
IEnumerator EnemyTurn(List <CardInfoScr> cards) { yield return(new WaitForSeconds(1)); int count = cards.Count == 1 ? 1 : Random.Range(0, cards.Count); for (int i = 0; i < count; i++) { if (EnemyFieldCards.Count > 5 || EnemyMana == 0 || EnemyHandCards.Count == 0) { break; } List <CardInfoScr> cardsList = cards.FindAll(x => EnemyMana >= x.SelfCard.Manacost); if (cardsList.Count == 0) { break; } cardsList[0].GetComponent <CardMovementScr>().MoveToField(EnemyField); ReduceMana(false, cardsList[0].SelfCard.Manacost); yield return(new WaitForSeconds(.51f)); cardsList[0].ShowCardInfo(cardsList[0].SelfCard, false); cardsList[0].transform.SetParent(EnemyField); EnemyFieldCards.Add(cardsList[0]); EnemyHandCards.Remove(cardsList[0]); } yield return(new WaitForSeconds(1)); // enemy's possibility attack hero card's foreach (var activeCard in EnemyFieldCards.FindAll(x => x.SelfCard.CanAttack)) { if (Random.Range(0, 2) == 0 && PlayerFieldCards.Count > 0) { var enemy = PlayerFieldCards[Random.Range(0, PlayerFieldCards.Count)]; Debug.Log(activeCard.SelfCard.Name + " (" + activeCard.SelfCard.Attack + ";" + activeCard.SelfCard.Defense + " )" + "--->" + enemy.SelfCard.Name + " (" + enemy.SelfCard.Attack + ";" + enemy.SelfCard.Defense + " )"); activeCard.SelfCard.ChageAttackState(false); activeCard.GetComponent <CardMovementScr>().MoveToTarget(enemy.transform); yield return(new WaitForSeconds(.75f)); CardsFight(enemy, activeCard); } else { Debug.Log(activeCard.SelfCard.Name + " (" + activeCard.SelfCard.Attack + ") Attacked hero"); activeCard.SelfCard.ChageAttackState(false); activeCard.GetComponent <CardMovementScr>().MoveToTarget(PlayerHero.transform); yield return(new WaitForSeconds(.75f)); DamageHero(activeCard, false); } yield return(new WaitForSeconds(.2f)); } yield return(new WaitForSeconds(1)); ChangeTurn(); }
void DestroyCard(CardInfoScr card, int e) { if (IsPlayerTurn) { if (e == 1) { EnemyFieldCard1.Remove(card); } if (e == 2) { EnemyFieldCard2.Remove(card); } if (e == 3) { EnemyFieldCard3.Remove(card); } if (e == 4) { EnemyFieldCard4.Remove(card); } if (e == 5) { EnemyFieldCard5.Remove(card); } if (e == 6) { EnemyFieldCard6.Remove(card); } if (e == 7) { EnemyFieldCard7.Remove(card); } if (e == 8) { EnemyFieldCard8.Remove(card); } EnemyFieldCards.Remove(card); } else { if (e == 1) { PlayerFieldCard1.Remove(card); } if (e == 2) { PlayerFieldCard2.Remove(card); } if (e == 3) { PlayerFieldCard3.Remove(card); } if (e == 4) { PlayerFieldCard4.Remove(card); } if (e == 5) { PlayerFieldCard5.Remove(card); } if (e == 6) { PlayerFieldCard6.Remove(card); } if (e == 7) { PlayerFieldCard7.Remove(card); } if (e == 8) { PlayerFieldCard8.Remove(card); } PlayerFieldCards.Remove(card); } Destroy(card.gameObject); }
void EnemyTurn(List <CardInfoScr> cards) { List <CardInfoScr> cardlist = cards.FindAll(x => x.SelfCard.Preparation == 0); //Debug.Log("count=" + cardlist.Count); int n = 1; for (int i = 0; i < cardlist.Count; i++) { if (EnemyFieldCards.Count > 7) { return; } n = 1; while (n == 1) { int j = Random.Range(1, 9); if (j == 1 && EnemyFieldCard1.Count == 0) { cardlist[i].ShowCardInfo(cardlist[i].SelfCard); cardlist[i].transform.SetParent(EnemyField1); EnemyFieldCard1.Add(cardlist[i]); EnemyFieldCards.Add(cardlist[i]); EnemyHandCards.Remove(cardlist[i]); n = 0; } if (j == 2 && EnemyFieldCard2.Count == 0) { cardlist[i].ShowCardInfo(cardlist[i].SelfCard); cardlist[i].transform.SetParent(EnemyField2); EnemyFieldCard2.Add(cardlist[i]); EnemyFieldCards.Add(cardlist[i]); EnemyHandCards.Remove(cardlist[i]); n = 0; } if (j == 3 && EnemyFieldCard3.Count == 0) { cardlist[i].ShowCardInfo(cardlist[i].SelfCard); cardlist[i].transform.SetParent(EnemyField3); EnemyFieldCard3.Add(cardlist[i]); EnemyFieldCards.Add(cardlist[i]); EnemyHandCards.Remove(cardlist[i]); n = 0; } if (j == 4 && EnemyFieldCard4.Count == 0) { cardlist[i].ShowCardInfo(cardlist[i].SelfCard); cardlist[i].transform.SetParent(EnemyField4); EnemyFieldCard4.Add(cardlist[i]); EnemyFieldCards.Add(cardlist[i]); EnemyHandCards.Remove(cardlist[i]); n = 0; } if (j == 5 && EnemyFieldCard5.Count == 0) { cardlist[i].ShowCardInfo(cardlist[i].SelfCard); cardlist[i].transform.SetParent(EnemyField5); EnemyFieldCard5.Add(cardlist[i]); EnemyFieldCards.Add(cardlist[i]); EnemyHandCards.Remove(cardlist[i]); n = 0; } if (j == 6 && EnemyFieldCard6.Count == 0) { cardlist[i].ShowCardInfo(cardlist[i].SelfCard); cardlist[i].transform.SetParent(EnemyField6); EnemyFieldCard6.Add(cardlist[i]); EnemyFieldCards.Add(cardlist[i]); EnemyHandCards.Remove(cardlist[i]); n = 0; } if (j == 7 && EnemyFieldCard7.Count == 0) { cardlist[i].ShowCardInfo(cardlist[i].SelfCard); cardlist[i].transform.SetParent(EnemyField7); EnemyFieldCard7.Add(cardlist[i]); EnemyFieldCards.Add(cardlist[i]); EnemyHandCards.Remove(cardlist[i]); n = 0; } if (j == 8 && EnemyFieldCard8.Count == 0) { cardlist[i].ShowCardInfo(cardlist[i].SelfCard); cardlist[i].transform.SetParent(EnemyField8); EnemyFieldCard8.Add(cardlist[i]); EnemyFieldCards.Add(cardlist[i]); EnemyHandCards.Remove(cardlist[i]); n = 0; } } } }