// Update is called once per frame
    new void Update()
    {
        if (m_leverState == eLevelState.InUse && LeverType == eLevelType.MultiUse && (Time.time - m_timePulled > (ResetTime + SendSignalDelay)))
        {
            m_leverState = eLevelState.ReadyForUse;
            state        = false;
        }

        if (SendSignalDelay != 0.0f && Time.time - m_timePulled >= SendSignalDelay && !m_sentSignal)
        {
            state        = true;
            m_sentSignal = true;
        }

        if (m_triggerEntered)
        {
            if (m_animation != null && (Time.time - m_timePulled > TimeDelaySecs && m_leverState == eLevelState.InUse))
            {
                m_animation[AnimationName].speed = 1.0f;
            }

            if (m_animation != null && m_leverState == eLevelState.Reseting)
            {
                m_animation[AnimationName].speed = -1.0f;
            }

            bool pulled = CheckContextButton();
            if (pulled && m_leverState == eLevelState.ReadyForUse)
            {
                CEntityPlayer player = CEntityPlayer.GetInstance();

                if (OnWall)
                {
                    player.SetPlayerState(PlayerState.PullingWallLeverDown);
                }
                else
                {
                    if (AnimationName == "KickActivate")
                    {
                        player.SetPlayerState(PlayerState.KickFloorLever);
                    }
                    else
                    {
                        player.SetPlayerState(PlayerState.NormalFloorLever);
                    }
                }

                if (SendSignalDelay == 0.0f)
                {
                    state = true;
                }
                else
                {
                    m_sentSignal = false;
                }

                m_leverState = eLevelState.InUse;
                m_timePulled = Time.time;
            }
            else if (LeverType == eLevelType.Toggle && pulled && m_leverState == eLevelState.Finished)
            {
                CEntityPlayer player = CEntityPlayer.GetInstance();
                player.SetPlayerState(PlayerState.PullingWallLeverUp);

                state        = false;
                m_leverState = eLevelState.Reseting;
                m_timePulled = Time.time;
            }
        }

        if (m_animation == null)
        {
            return;
        }

        if (m_leverState == eLevelState.InUse && m_animation[AnimationName].normalizedTime > 0.9f)
        {
            if (LeverType == eLevelType.InstantReset)
            {
                m_animation[AnimationName].speed = -1.0f;
                m_leverState = eLevelState.Reseting;
            }
            else if (LeverType == eLevelType.Toggle)
            {
                m_animation[AnimationName].speed = 0.0f;
                m_leverState = eLevelState.Finished;
            }
            else if (LeverType == eLevelType.MultiUse)
            {
                m_leverState = eLevelState.Reseting;
                m_animation[AnimationName].speed = -1.0f;
                state = false;
            }

            CEntityPlayer player = CEntityPlayer.GetInstance();
            player.SetPlayerState(PlayerState.Standing);
        }

        if (m_leverState == eLevelState.Reseting && m_animation[AnimationName].normalizedTime < 0.1f)
        {
            m_animation[AnimationName].speed = 0.0f;
            m_leverState = eLevelState.ReadyForUse;

            CEntityPlayer player = CEntityPlayer.GetInstance();
            player.SetPlayerState(PlayerState.Standing);
        }
    }
Example #2
0
        public void Update(GameTime gameTime)
        {
            switch (State)
            {
            case eLevelState.Playing:
                ActiveShape.Update(gameTime);
                if (ActiveShape.IsDisposed)
                {
                    ActiveShape = NextShape;
                    NextShape   = ShapeFactory.CreateRandom(GameMode);
                    if (ActiveShape.CollidesWithOtherBlocks())
                    {
                        LoseLife();
                    }
                }

                // Upgrade level when applicable
                if (Score >= LevelUpLookup[LevelNr])
                {
                    LevelNr++;
                    FallDelayInMS -= LevelDelayDecrementer;
                    Engine.Instance.Audio.PlaySound("levelUp");
                }

                if (Engine.Instance.KB.KeyIsReleased(Keys.Escape))
                {
                    State = eLevelState.QuitConfirm;
                }
                if (Engine.Instance.KB.KeyIsReleased(Keys.B))
                {
                    SetRandomBG();
                }
                break;

            case eLevelState.CountingDown:
                CountDown.Update(gameTime);
                if (CountDown.IsInterval)
                {
                    if (CountDown.TimeLeftSec > 0)
                    {
                        Engine.Instance.Audio.PlaySound("countdown");
                    }
                    else
                    {
                        Engine.Instance.Audio.PlaySound("countdownFinished");
                        State = eLevelState.Playing;
                    }
                }
                break;

            case eLevelState.QuitConfirm:
                if (Engine.Instance.KB.KeyIsReleased(Keys.Y))
                {
                    Engine.Instance.ActiveState = new MainMenu();
                }
                else if (Engine.Instance.KB.KeyIsReleased(Keys.N))
                {
                    State = eLevelState.Playing;
                }
                break;

            default:
                throw new CaseStatementMissingException();
            }
        }
    // Update is called once per frame
    new void Update()
    {
        if (m_leverState == eLevelState.InUse && LeverType == eLevelType.MultiUse && (Time.time - m_timePulled > (ResetTime + SendSignalDelay)))
        {
            m_leverState = eLevelState.ReadyForUse;
            state = false;
        }

        if (SendSignalDelay != 0.0f && Time.time - m_timePulled >= SendSignalDelay && !m_sentSignal)
        {
            state = true;
            m_sentSignal = true;
        }

        if (m_triggerEntered)
        {
            if (m_animation != null && (Time.time - m_timePulled > TimeDelaySecs && m_leverState == eLevelState.InUse))
            {
                m_animation[AnimationName].speed = 1.0f;
            }

            if (m_animation != null && m_leverState == eLevelState.Reseting)
            {
                m_animation[AnimationName].speed = -1.0f;
            }

            bool pulled = CheckContextButton();
            if (pulled && m_leverState == eLevelState.ReadyForUse)
            {
                CEntityPlayer player = CEntityPlayer.GetInstance();

                if (OnWall) {
                    player.SetPlayerState(PlayerState.PullingWallLeverDown);
                } else {
                    if (AnimationName == "KickActivate") {
                        player.SetPlayerState(PlayerState.KickFloorLever);
                    }
                    else {
                        player.SetPlayerState(PlayerState.NormalFloorLever);
                    }
                }

                if (SendSignalDelay == 0.0f)
                    state = true;
                else
                    m_sentSignal = false;

                m_leverState = eLevelState.InUse;
                m_timePulled = Time.time;
            }
            else if (LeverType == eLevelType.Toggle && pulled && m_leverState == eLevelState.Finished)
            {
                CEntityPlayer player = CEntityPlayer.GetInstance();
                player.SetPlayerState(PlayerState.PullingWallLeverUp);

                state = false;
                m_leverState = eLevelState.Reseting;
                m_timePulled = Time.time;
            }
        }

        if (m_animation == null) {
            return;
        }

        if (m_leverState == eLevelState.InUse && m_animation[AnimationName].normalizedTime > 0.9f)
        {
            if (LeverType == eLevelType.InstantReset)
            {
                m_animation[AnimationName].speed = -1.0f;
                m_leverState = eLevelState.Reseting;
            }
            else if (LeverType == eLevelType.Toggle)
            {
                m_animation[AnimationName].speed = 0.0f;
                m_leverState = eLevelState.Finished;
            }
            else if (LeverType == eLevelType.MultiUse)
            {
                m_leverState = eLevelState.Reseting;
                m_animation[AnimationName].speed = -1.0f;
                state = false;
            }

            CEntityPlayer player = CEntityPlayer.GetInstance();
            player.SetPlayerState(PlayerState.Standing);
        }

        if (m_leverState == eLevelState.Reseting && m_animation[AnimationName].normalizedTime < 0.1f)
        {
            m_animation[AnimationName].speed = 0.0f;
            m_leverState = eLevelState.ReadyForUse;

            CEntityPlayer player = CEntityPlayer.GetInstance();
            player.SetPlayerState(PlayerState.Standing);
        }
    }