private IEnumerator LevelUpdate()
    {
        while (_isPlaying)
        {
            switch (CurrentState)
            {
            case LevelState.Idle: Debug.Log("Idle State"); break;

            case LevelState.EnemyTurn: yield return(StartCoroutine(EnemyTurn())); break;

            case LevelState.PlayerTurn:

                if (GameObject.Find("GridManager").GetComponent <GridManager>() != null)
                {
                    GameObject.Find("GridManager").GetComponent <GridManager>().HideInteratableVisual();
                }

                yield return(StartCoroutine(PlayerTurn()));

                if (GameObject.Find("GridManager").GetComponent <GridManager>() != null)
                {
                    GameObject.Find("GridManager").GetComponent <GridManager>().HideInteratableVisual();
                }

                foreach (Transform item in GameObject.Find("SpellBar").transform)
                {
                    item.GetChild(1).GetComponent <Toggle>().isOn = false;
                }

                yield return(new WaitForSeconds(0.1f));

                if (GameObject.Find("GridManager").GetComponent <GridManager>() != null)
                {
                    GameObject.Find("GridManager").GetComponent <GridManager>().HideInteratableVisual();
                }
                break;


            // HideInteratableVisual();

            case LevelState.LevelEnd:
                //UIManager.Set
                Debug.Log("Level Completed, go to endScreen");
                OnLevelEnd?.Invoke();
                _isPlaying = false;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            yield return(new WaitForEndOfFrame());
        }


        yield return(null);
    }
Пример #2
0
 private void Awake()
 {
     if (onLevelBegin == null)
     {
         onLevelBegin = new OnLevelBegin();
     }
     if (onLevelLose == null)
     {
         onLevelLose = new OnLevelLose();
     }
     if (onLevelEnd == null)
     {
         onLevelEnd = new OnLevelEnd();
     }
 }
Пример #3
0
 private void OnTriggerEnter(Collider other)
 {
     if (other.CompareTag("Player"))
     {
         OnLevelEnd?.Invoke();
         if (loadPreviousLevel)
         {
             levelAnim.SetTrigger("PreviousLevel");
         }
         else
         {
             levelAnim.SetTrigger("EndLevel");
         }
     }
 }
Пример #4
0
    private void TouchHandler_OnTouchUp()
    {
        IsWin = Ground.EndPosition.x > AimPlatform.transform.position.x && Ground.EndPosition.x < AimPlatform.EndPosition.x;

        Score += Convert.ToInt32(IsWin);
        Score += Convert.ToInt32(IsGroundInCenter(Ground.EndPosition));

        if (!IsWin)
        {
            AimPlatform.DisableCollider();
        }

        OnLevelEnd?.Invoke(this, IsWin);

        TouchHandler.OnTouchUp -= TouchHandler_OnTouchUp;
    }
Пример #5
0
        public void GenerateLevelEvents(GameTime gameTime)
        {
            // only generate events every 2 seconds
            if (_startGameTime == null)
            {
                _startGameTime = gameTime.TotalGameTime;
            }

            // nothing to do until tick time
            if (gameTime.TotalGameTime - _startGameTime < TickTimeSpan)
            {
                return;
            }

            _startGameTime = gameTime.TotalGameTime;

            foreach (var e in _currentLevel[_currentLevelRow])
            {
                switch (e)
                {
                case LevelEvents.GenerateEnemies g:
                    OnGenerateEnemies?.Invoke(this, g);
                    break;

                case LevelEvents.GenerateTurret g:
                    OnGenerateTurret?.Invoke(this, g);
                    break;

                case LevelEvents.StartLevel s:
                    OnLevelStart?.Invoke(this, s);
                    break;

                case LevelEvents.EndLevel s:
                    OnLevelEnd?.Invoke(this, s);
                    break;

                case LevelEvents.NoRowEvent n:
                    OnLevelNoRowEvent?.Invoke(this, n);
                    break;
                }
            }

            _currentLevelRow++;
        }
Пример #6
0
 /// <summary>
 /// Ends the current level.
 /// </summary>
 public static void EndCurrentLevel()
 {
     OnLevelEnd?.Invoke(currentLevelIndex);
 }
Пример #7
0
 public void EndLevel()
 {
     AudioManager.Instance.Play(AudioClipName.Win);
     OnLevelEnd?.Invoke();
 }
Пример #8
0
 public void LevelEnd()
 {
     OnLevelEnd?.Invoke();
 }