// 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); } }
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); } }