예제 #1
0
        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(); // сброс настроек контроллера
        }
예제 #2
0
        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()); // битва начинается
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        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_);
        }
예제 #6
0
        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);
        }
    }