public IEnumerator EndBattle(bool win) // конец битвы { battle = false; turnEnded = true; // всплывающее сообщение var message = AppearingAnim.CreateMsg("WinMessage", new Vector2(0.29f, 0.37f), new Vector2(0.7f, 0.68f), win ? "Ты победил!" : "Ты проиграл"); message.yOffset = 50; message.color = win ? Color.green : Color.red; message.period = 2; message.Play(); yield return(new WaitForSeconds(2)); // пауза if (win) { for (int i = 2; i < transform.childCount; i++) { transform.GetChild(i).gameObject.SetActive(true); // включаем поля и рёбра уровня } player.transform.localScale /= 2; // возврат игрока на место player.transform.position = player.currentField.transform.position + new Vector3(0, player.currentField.transform.localScale.y, 0); StartCoroutine(player.AddXP(enemy.Level)); // дать опыт } else { yield return(new WaitForSeconds(1)); SceneManager.LoadScene(MenuHandler.mainMenuScene_); // меню } ResetBattle(); // сброс настроек контроллера }
public IEnumerator StartBattle(Enemy enemy) // начать битву { // создать всплывающее сообщение AppearingAnim msg = AppearingAnim.CreateMsg("StartBattleMsg", new Vector2(0.21f, 0.37f), new Vector2(0.78f, 0.68f), "Битва начинается"); msg.color = Color.red; msg.yOffset = 50; msg.period = 2; msg.Play(); battle.SetUpOpponents(enemy); // настройка оппонентов (увеличить и поставить) for (int i = 2; i < transform.childCount - 1; i++) { transform.GetChild(i).gameObject.SetActive(false); // выключить всё, кроме перых двух детей уровня (земли и игрока) } player.transform.GetChild(0).gameObject.SetActive(false); // временно спрятать игрока и противника enemy.transform.GetChild(0).gameObject.SetActive(false); yield return(new WaitForSeconds(2.0f)); // подождать 2 секунды player.transform.GetChild(0).gameObject.SetActive(true); // они появились enemy.transform.GetChild(0).gameObject.SetActive(true); StartCoroutine(battle.StartBattle()); // битва начинается }
public override void Heal(int health) // расширяем метод { // всплывающее сообщение var message = AppearingAnim.CreateMsg("EnemyDamage", new Vector2(0.71f, 0.83f), new Vector2(0.85f, 0.9f), $"+ {health} HP"); message.yOffset = -20; message.color = Color.green; message.Play(); // стандартная версия base.Heal(health); }
public override void GetDamage(int damage) // расширяем метод { // всплывающее сообщение var message = AppearingAnim.CreateMsg("EnemyDamage", new Vector2(0.71f, 0.83f), new Vector2(0.85f, 0.9f), $"- {damage} HP"); message.yOffset = -20; message.color = Color.red; message.Play(); // стандартная версия base.GetDamage(damage); }
IEnumerator EndGame() { var message = AppearingAnim.CreateMsg("EndGameMsg", new Vector2(0.29f, 0.37f), new Vector2(0.7f, 0.68f), "Уровень пройден.\nИгра окончена!"); message.yOffset = 50; message.color = Color.green; message.period = 2; message.Play(); yield return(new WaitForSeconds(3)); SceneManager.LoadScene(MenuHandler.mainMenuScene_); }
public override void UseByPlayer(Player player) { if (player.inventory[1, 0] == null) { player.inventory[1, 0] = new CardDescription() { size = false, condition = new Condition() { number = 3, type = ConditionType.Max }, bonus = new Bonus() { type = BonusType.Freeze }, action = CardAction.Damage, } } ; else if (player.inventory[2, 0] == null) { player.inventory[2, 0] = new CardDescription() { action = CardAction.DoubleDamage, condition = new Condition() { type = ConditionType.Doubles }, slotsCount = true, bonus = new Bonus() { type = BonusType.Thorns }, } } ; var msg = AppearingAnim.CreateMsg("New card", new Vector2(0.75f, 0.22f), new Vector2(0.97f, 0.33f), "Получена новая карта"); msg.color = Color.green; msg.period = 2; msg.yOffset = 20; msg.Play(); Destroy(gameObject); } }