Пример #1
0
    public IEnumerator EndBattleCo2()
    {
        //this makes the sound fade twice when going back to scene - which is not desireable
        //yield return new WaitForSeconds(1f);

        uiButtonsHolder.SetActive(false);
        targetMenu.SetActive(false);
        magicMenu.SetActive(false);
        battleActive = false;
        if (!playerDead)
        {
            AudioManager.instance.music[4].volume = 0f;
            //StartCoroutine(FadeAudio.StartFade(AudioManager.instance.music[4], 1f, 0f));
            yield return(null);
        }

        for (int i = 0; i < activeBattlers.Count; i++)
        {
            if (activeBattlers[i].isPlayer)
            {
                for (int j = 0; j < GameManager.instance.playerStats.Length; j++)
                {
                    if (activeBattlers[i].charName == GameManager.instance.playerStats[i].charName)
                    {
                        GameManager.instance.playerStats[j].currentHp = activeBattlers[i].currentHp;
                        GameManager.instance.playerStats[j].currentMp = activeBattlers[i].currentMp;
                    }
                }
            }
            Destroy(activeBattlers[i].gameObject);
        }
        currentTurn = 0;
        GameManager.instance.battleActive = false;
        battleActive = false;
        Camera.SetActive(false);
        Player.instance.OnRunSpeed();
        EnemyDefeated ef = obj.AddComponent <EnemyDefeated>();

        ef.DetermineDefeated(npcName);

        // battlescene unactive
        BattleScene.SetActive(false);
        //Reset battler list
        activeBattlers.Clear();

        //find music from worldcontroller
        int sceneMusic = FindObjectOfType <WorldController>().musicToPlay;

        AudioManager.instance.music[sceneMusic].volume = 0f;
        AudioManager.instance.PlayMusic(sceneMusic);
        StartCoroutine(FadeAudio.StartFade(AudioManager.instance.music[sceneMusic], 3, 0.2f));
        //}
        Player.instance.UnMuteWalk();
    }
        public override void Trigger(IGame game, IEffectHandle handle)
        {
            var defeatedState = new EnemyDefeated(game, enemy, attackers);

            foreach (var card in game.GetCardsInPlayWithEffect <ICardInPlay, IBeforeEnemyDefeated>())
            {
                foreach (var effect in card.BaseCard.Text.Effects.OfType <IBeforeEnemyDefeated>())
                {
                    effect.BeforeEnemyDefeated(defeatedState);
                }
            }

            foreach (var card in game.GetCardsInPlayWithEffect <ICardInPlay, IDuringEnemyDefeated>())
            {
                foreach (var effect in card.BaseCard.Text.Effects.OfType <IDuringEnemyDefeated>())
                {
                    effect.DuringEnemyDefeated(defeatedState);
                }
            }

            if (!defeatedState.IsEnemyDefeated)
            {
                handle.Cancel(GetCancelledString()); return;
            }

            foreach (var card in game.GetCardsInPlayWithEffect <ICardInPlay, IAfterEnemyDefeated>())
            {
                foreach (var effect in card.BaseCard.Text.Effects.OfType <IAfterEnemyDefeated>())
                {
                    effect.AfterEnemyDefeated(defeatedState);
                }
            }

            var leavingPlayEffect = new CardLeavesPlayEffect(game, enemy);

            game.AddEffect(leavingPlayEffect);
            var leavingPlayHandle = leavingPlayEffect.GetHandle(game);

            game.TriggerEffect(leavingPlayHandle);

            handle.Resolve(GetCompletedStatus());
        }