//Used to display First timer
    private void OnPreLevel()
    {
        BeforeLevelStartTimer -= Time.DeltaTime;

        if (BeforeLevelStartTimer <= 0)
        {
            Type = HellWorldStateType.OnLevel;
            //Toggle off first timer
            MonoGameVariables.Instance.Hell_ExplainText.gameObject.SetActive(false);
            MonoGameVariables.Instance.Hell_WaitingTimer.gameObject.SetActive(false);

            World.GetExistingSystem <TemporaryEnemySpawnerSystem>().Enabled = true;
            return;
        }

        //Look if should create number
        if (BeforeLevelStartTimer <= PreviousDisplayedNumber - 1)
        {
            PreviousDisplayedNumber--;

            //Reset text scale
            MonoGameVariables.Instance.Hell_WaitingTimer.transform.localScale = new Vector3(1, 1, 1);
            MonoGameVariables.Instance.Hell_WaitingTimer.text = PreviousDisplayedNumber.ToString();
            MonoGameVariables.Instance.Hell_WaitingTimer.StartCoroutine(DecreaseTextSize(MonoGameVariables.Instance.Hell_WaitingTimer));
        }
    }
    protected override void OnUpdate()
    {
        if (GlobalEvents.GameEvents.TogglePauseGame)
        {
            return;
        }

        if (Type == HellWorldStateType.OnPreLevel)
        {
            OnPreLevel();
            return;
        }

        if (Type == HellWorldStateType.OnLevel)
        {
            //Decrease Timer
            HellTimer -= Time.DeltaTime;

            //Set UI timers
            UIManager.SetTimeOnHellTimers(HellTimer);

            //Look if end timer reached
            if (HellTimer > 0)
            {
                return;
            }

            Type = HellWorldStateType.OnEndLevel;

            //Deactivate spawners
            World.GetExistingSystem <TemporaryEnemySpawnerSystem>().Enabled = false;

            //Destroy all enemies
            GlobalEvents.GameEvents.Destroy <EnemyTag>();
            GlobalEvents.GameEvents.Destroy <BulletTag>();

            //Make sure Timers are set o 0.00
            UIManager.SetTimeOnHellTimers(0);

            //Toggle Win Text
            MonoGameVariables.Instance.Hell_WinText.gameObject.SetActive(true);
            MonoGameVariables.Instance.Hell_WaitingTimer.gameObject.SetActive(true);

            //Init Delay
            AfterLevelTimer         = ResetAfterLevel;
            PreviousDisplayedNumber = (ushort)(AfterLevelTimer + 1);
        }

        if (Type == HellWorldStateType.OnEndLevel)
        {
            OnEndLevel();
        }
    }
    protected override void OnStartRunning()
    {
        //Reset Timer
        HellTimer               = ResetHellTimer;
        BeforeLevelStartTimer   = ResetBeforeLevelStart;
        PreviousDisplayedNumber = (ushort)(BeforeLevelStartTimer + 1);

        Type = HellWorldStateType.OnPreLevel;
        MonoGameVariables.Instance.Hell_ExplainText.gameObject.SetActive(true);
        MonoGameVariables.Instance.Hell_WaitingTimer.gameObject.SetActive(true);

        World.GetExistingSystem <TemporaryEnemySpawnerSystem>().Enabled = false;
    }