/*void GiveNewCards() * { * * * }*/ public void CardsFight(CardControllerScript attacker, CardControllerScript defender) { attacker.OnDamageDeal(); defender.OnTakeDamage(); attacker.OnTakeDamage(); defender.thisCard.GetDamage(attacker.thisCard.attack); attacker.thisCard.GetDamage(defender.thisCard.attack); defender.CheckForAlive(); attacker.CheckForAlive(); }
public void OnDrop(PointerEventData eventData) { if (!GameManagerScript.instance.isPlayerTurn) { return; } CardControllerScript card = eventData.pointerDrag.GetComponent <CardControllerScript>(); if (card && card.thisCard.canAttack && type == HeroType.ENEMY && !GameManagerScript.instance.enemyFieldCards.Exists(x => x.thisCard.isProvocation)) { GameManagerScript.instance.DamageHero(card, true); } }
public void DamageHero(CardControllerScript card, bool isEnemyAttacked) { if (isEnemyAttacked) { enemyHP = Mathf.Clamp(enemyHP - card.thisCard.attack, 0, int.MaxValue); } else { playerHP = Mathf.Clamp(playerHP - card.thisCard.attack, 0, int.MaxValue); } ShowHP(); card.OnDamageDeal(); CheckForResult(); }
void CreateCardPref(Card card, Transform hand)//создание префаба карты { GameObject cardGO = Instantiate(cardPref, hand, false); CardControllerScript cardC = cardGO.GetComponent <CardControllerScript>(); cardC.Init(card, hand == playerHand); if (cardC.isPlayerCard) { playerHandCards.Add(cardC); } else { enemyHandCards.Add(cardC); } }
public void DamageHero(CardControllerScript card, bool isEnemyAttacked) { if (isEnemyAttacked) { enemyHP -= card.thisCard.attack; } else { playerHP -= card.thisCard.attack; } ShowHP(); card.OnDamageDeal(); CheckForResult(); }
public void OnDrop(PointerEventData eventData) { if (type != FieldType.SELF_FIELD) { return; } CardControllerScript card = eventData.pointerDrag.GetComponent <CardControllerScript>(); if (card && GameManagerScript.instance.playerFieldCards.Count < 5 && GameManagerScript.instance.isPlayerTurn && GameManagerScript.instance.playerEnergy >= card.thisCard.cost && !card.thisCard.isPlaced) { if (!card.thisCard.isSpell) { card.movement.defaultParent = transform;//изменение родителя карты при переносе } card.OnCast(); } }
public void HighlightTargets(CardControllerScript attacker, bool highlight)// подсветка карт для атаки { List <CardControllerScript> targets = new List <CardControllerScript>(); if (attacker.thisCard.isSpell) { var spellCard = (SpellCard)attacker.thisCard; if (spellCard.spellTarget == SpellCard.TargetType.NO_TARGET) { targets = new List <CardControllerScript>(); } else if (spellCard.spellTarget == SpellCard.TargetType.ALLY_CARD_TARGET) { targets = playerFieldCards; } else { targets = enemyFieldCards; } } else { if (enemyFieldCards.Exists(x => x.thisCard.isProvocation)) { targets = enemyFieldCards.FindAll(x => x.thisCard.isProvocation); } else { targets = enemyFieldCards; enemyHero.HighlightHero(highlight); } } foreach (var card in targets) { card.info.HighlightAsTarget(highlight); } }
public void OnDrop(PointerEventData eventData) { if (!GameManagerScript.instance.isPlayerTurn) { return; } CardControllerScript attacker = eventData.pointerDrag.GetComponent <CardControllerScript>(), defender = GetComponent <CardControllerScript>(); if (attacker && attacker.thisCard.canAttack && defender.thisCard.isPlaced) { if (GameManagerScript.instance.enemyFieldCards.Exists(x => x.thisCard.isProvocation) && !defender.thisCard.isProvocation) { return; } else { GameManagerScript.instance.CardsFight(attacker, defender); } } }
public void OnDrop(PointerEventData eventData) { if (!GameManagerScript.instance.isPlayerTurn) { return; } CardControllerScript spell = eventData.pointerDrag.GetComponent <CardControllerScript>(), target = GetComponent <CardControllerScript>(); if (spell && spell.thisCard.isSpell && spell.isPlayerCard && target.thisCard.isPlaced && GameManagerScript.instance.playerEnergy >= spell.thisCard.cost) { var spellCard = (SpellCard)spell.thisCard; if ((spellCard.spellTarget == SpellCard.TargetType.ALLY_CARD_TARGET && target.isPlayerCard) || spellCard.spellTarget == SpellCard.TargetType.ENEMY_CARD_TARGET && !target.isPlayerCard) { GameManagerScript.instance.ReduceEnergy(true, spell.thisCard.cost); spell.UseSpell(target); GameManagerScript.instance.CheckCardsForManaAvailability(); } } }
public void UseSpell(CardControllerScript target) { var spellCard = (SpellCard)thisCard; switch (spellCard.spell) { case SpellCard.SpellType.ADD_PROVOCATION: //добавление провокиции if (!target.thisCard.isProvocation) { target.thisCard.abilities.Add(Card.AbilityType.PROVOCATION); target.ability.provocation.SetActive(true); } break; case SpellCard.SpellType.DAMAGE_CARD: //урон одной карте GiveDamageTo(target, spellCard.spellValue); break; case SpellCard.SpellType.DAMAGE_CARDS: //урон всем картам соперника var enemyCards = isPlayerCard ? new List <CardControllerScript>(gameManager.enemyFieldCards): new List <CardControllerScript>(gameManager.playerFieldCards); foreach (var card in enemyCards) { GiveDamageTo(card, spellCard.spellValue); } break; case SpellCard.SpellType.DAMAGE_HERO: //урон герою if (isPlayerCard) { gameManager.enemyHP -= spellCard.spellValue; } else { gameManager.playerHP -= spellCard.spellValue; } gameManager.ShowHP(); gameManager.CheckForResult(); break; case SpellCard.SpellType.DESTROY_CARD: //уничтожение карты GiveDamageTo(target, target.thisCard.helth); break; case SpellCard.SpellType.HEAL_CARD: //хилл одной карты target.thisCard.helth += spellCard.spellValue; break; case SpellCard.SpellType.HEAL_CARDS: //хилл всех своих карт var allyCards = isPlayerCard ? gameManager.playerFieldCards : gameManager.enemyFieldCards; foreach (var card in allyCards) { card.thisCard.helth += spellCard.spellValue; card.info.RefreshData(); } break; case SpellCard.SpellType.HEAL_HERO: //хилл героя if (isPlayerCard) { gameManager.playerHP += spellCard.spellValue; } else { gameManager.enemyHP += spellCard.spellValue; } gameManager.ShowHP(); break; } if (target != null) { target.ability.OnCast(); target.CheckForAlive(); } DestroyCard(); }
void GiveDamageTo(CardControllerScript card, int damage) { card.thisCard.GetDamage(damage); card.CheckForAlive(); card.OnTakeDamage(); }