using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using EvilSatellites.Menu; using DavyKager; namespace EvilSatellites.Screens { public class OptionsScreen : MenuScreen { public override void Activate() { MenuOptions = new MenuContainer("Options", "Set global options for the game."); MenuOptions.Add(new MenuEntry("Music Volume", "Toggle between music volumes")) .Add(new MenuEntry("Use screen reader", "Use screen reader speech instead of SAPI")) .Add(new MenuEntry("Use Force Feedback", "Vibrate on certain game actions such as weapon fire, getting hit, etc.")) .Add(new MenuEntry("Back", "Go Back to previous screen")); base.Activate(); } public override void SelectItem() { base.SelectItem(); if (CursorPosition == 0) { ChangeVolume(); } if (CursorPosition == 1) { ChangeSpeech(); } if (CursorPosition == 2) { ChangeForceFeedback(); } if (CursorPosition == 3) { Manager.RemoveScreen(this); Manager.AddScreen(new MainMenuScreen()); } } public void ChangeSpeech() { if (GameSettings.PreferSAPI) { Tolk.PreferSAPI(false); Tolk.TrySAPI(false); Tolk.Output("Prefering screen reader"); } else { Tolk.PreferSAPI(true); Tolk.TrySAPI(true); Tolk.Output("Prefering SAPI"); } } public void ChangeVolume() { Inputs.Update(); if (Manager.Music.Volume > 0.9) { Manager.Music.Volume = 0f; return; } if (Manager.Music.Volume < 0) { Manager.Music.Volume = 1; } if (Inputs.IsPressed(Microsoft.Xna.Framework.Input.Keys.LeftShift)) { Manager.Music.Volume = Manager.Music.Volume - 0.1f; } else { Manager.Music.Volume = Manager.Music.Volume + 0.1f; } } public void ChangeForceFeedback() { if (GameSettings.UseForceFeedback) { GameSettings.UseForceFeedback = false; Tolk.Output("Disabled force feedback"); } else { GameSettings.UseForceFeedback = true; Tolk.Output("Enabled force feedback"); Manager.Vibrations.AddVibration(1, 1, 500); } } } }