public void Update() { var index = _options.IndexOf(_selectedOption); if (KeyboardManager.Instance.IsKeyJustPressed(Keys.Up)) { index--; if (index < 0) { index = _options.Count - 1; } } if (KeyboardManager.Instance.IsKeyJustPressed(Keys.Down)) { index++; if (index >= _options.Count) { index = 0; } } if (KeyboardManager.Instance.IsKeyJustPressed(Keys.Left)) { if (_selectedOption == _musicVolume) { Save.MusicVolume = Math.Max(0, Save.MusicVolume - 0.1f); _musicVolume.Text = "Music volume: " + Math.Round(Save.MusicVolume * 10); Sfx.MusicInstance.Volume = Save.MusicVolume; Save.WriteSave(); Sfx.PlayGlassReverseSound(EngineActionType.Special); } if (_selectedOption == _sfxVolume) { Save.SoundVolume = Math.Max(0, Save.SoundVolume - 0.1f); _sfxVolume.Text = "Sound effects volume: " + Math.Round(Save.SoundVolume * 10); Save.WriteSave(); Sfx.PlayGlassReverseSound(EngineActionType.Special); } if (_selectedOption == _voiceOverVolume) { Save.VoiceOverVolume = Math.Max(0, Save.VoiceOverVolume - 0.1f); _voiceOverVolume.Text = "Voice over volume: " + Math.Round(Save.VoiceOverVolume * 10); Save.WriteSave(); Sfx.PlayGlassReverseSound(EngineActionType.Special); } } if (KeyboardManager.Instance.IsKeyJustPressed(Keys.Right)) { if (_selectedOption == _musicVolume) { Save.MusicVolume = Math.Min(1, Save.MusicVolume + 0.1f); _musicVolume.Text = "Music volume: " + Math.Round(Save.MusicVolume * 10); Sfx.MusicInstance.Volume = Save.MusicVolume; Save.WriteSave(); Sfx.PlayGlassSound(EngineActionType.Special); } if (_selectedOption == _sfxVolume) { Save.SoundVolume = Math.Min(1, Save.SoundVolume + 0.1f); _sfxVolume.Text = "Sound effects volume: " + Math.Round(Save.SoundVolume * 10); Save.WriteSave(); Sfx.PlayGlassSound(EngineActionType.Special); } if (_selectedOption == _voiceOverVolume) { Save.VoiceOverVolume = Math.Min(1, Save.VoiceOverVolume + 0.1f); _voiceOverVolume.Text = "Voice over volume: " + Math.Round(Save.VoiceOverVolume * 10); Save.WriteSave(); Sfx.PlayGlassSound(EngineActionType.Special); } } if (KeyboardManager.Instance.IsKeyJustPressed(Keys.Enter)) { if (_selectedOption == _resume) { IsActive = false; } if (_selectedOption == _quit) { GameCore.Instance.Exit(); } } _selectedOption = _options[index]; _options.ForEach(x => x.Alpha = 0.5f); _selectedOption.Alpha = 1; }
public void Update(float sceneOffset, bool controlsEnabled) { _smokeParticles.ForEach(x => x.Update()); _smokeParticles.RemoveAll(x => x.IsFinished); _stoneParticles.ForEach(x => x.Update()); _stoneParticles.RemoveAll(x => x.IsFinished); if (Math.Abs(sceneOffset - _renderOffset) >= 0.5 || !controlsEnabled) { return; } if (_messages.Count > 0) { _scene.SubtitleWidget.AddDelay(); _messages.ForEach(message => _scene.SubtitleWidget.AddSubtitle(message.Text, message.VoiceOver)); _messages.Clear(); } for (var i = 0; i < _actionBrickRenders.Count; i++) { _actionBrickRenders[i].Update(_actionBrickRenders.Count, i); } if (IsCompleted) { return; } _glyphRenderers.ForEach(glyph => glyph.Update()); var actionInput = GetActionInput(); if (actionInput.HasValue && _actionBrickRenders.Count < S.MaxActionsInLevel && !_isHiding) { _actionBrickRenders.Add(new RendererActionBrick(actionInput.Value, _actionBrickRenders.Count)); Sfx.PlayGlassSound(actionInput.Value); } if (KeyboardManager.Instance.IsKeyJustPressed(Keys.Enter) && !_isHiding) { if (CompareLists(_actionBrickRenders, _solution)) { if (_renderOffset == S.LastLevelIndex) { Save.LastLevel = S.LastLevelIndex + 1; Save.WriteSave(); Sfx.MusicInstance.Stop(); GameCore.Instance.SceneManager.SetScene(new OutroSmackScene()); return; } IsCompleted = true; GameCore.Instance.ShakePower += 2; _smokeParticles.Add(new ParticleSmoke()); _smokeParticles.Add(new ParticleSmoke()); _smokeParticles.Add(new ParticleSmoke()); _smokeParticles.Add(new ParticleSmoke()); _smokeParticles.Add(new ParticleSmoke()); _smokeParticles.Add(new ParticleSmoke()); _smokeParticles.Add(new ParticleSmoke()); _smokeParticles.Add(new ParticleSmoke()); _smokeParticles.Add(new ParticleSmoke()); _stoneParticles.Add(new ParticleStone()); _stoneParticles.Add(new ParticleStone()); _stoneParticles.Add(new ParticleStone()); _stoneParticles.Add(new ParticleStone()); _stoneParticles.Add(new ParticleStone()); _stoneParticles.Add(new ParticleStone()); _stoneParticles.Add(new ParticleStone()); _stoneParticles.Add(new ParticleStone()); _stoneParticles.Add(new ParticleStone()); _stoneParticles.Add(new ParticleStone()); _stoneParticles.Add(new ParticleStone()); _stoneParticles.Add(new ParticleStone()); _stoneParticles.Add(new ParticleStone()); Sfx.PlayLevelCompleted(); Save.LastLevel = (int)_renderOffset + 1; Save.WriteSave(); } else { for (var i = 0; i < _actionBrickRenders.Count; i++) { _actionBrickRenders[i].IsHiding = true; _actionBrickRenders[i].HidingDelay = i * 3; GameCore.Instance.RegisterDelayedAction(i * 3, GetSfxReverseSoundAction(_actionBrickRenders[i].Action)); } _isHiding = true; } } if (_isHiding) { if (_actionBrickRenders.All(brick => brick.IsFinished)) { _actionBrickRenders.Clear(); _isHiding = false; } } else { _actionBrickRenders.RemoveAll(x => x.IsFinished); } if (KeyboardManager.Instance.IsKeyJustPressed(Keys.Back) && !_isHiding && _actionBrickRenders.Count > 0) { var brick = _actionBrickRenders.FindLast(x => !x.IsHiding); if (brick != null) { brick.IsHiding = true; Sfx.PlayGlassReverseSound(brick.Action); } } }