Files
evilsatellites/EvilSatellites/Screens/OptionsScreen.cs
T
2021-04-24 23:31:43 +02:00

119 lines
3.5 KiB
C#

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("AI", "Your AI will sometimes comment on the things you're doing in game"))
.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)
{
ChangeAI();
}
if (CursorPosition == 4)
{
Manager.RemoveScreen(this);
Manager.AddScreen(new MainMenuScreen());
}
}
public void ChangeSpeech()
{
if (GameSettings.PreferSAPI == true)
{
Tolk.PreferSAPI(false);
Tolk.TrySAPI(false);
Tolk.Output("Prefering screen reader");
GameSettings.PreferSAPI = false;
} else
{
Tolk.PreferSAPI(true);
Tolk.TrySAPI(true);
Tolk.Output("Prefering SAPI");
GameSettings.PreferSAPI = true;
}
}
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);
}
}
public void ChangeAI()
{
if (GameSettings.EnableAI)
{
GameSettings.EnableAI = false;
Tolk.Output("AI is now muted");
}
else
{
GameSettings.EnableAI = true;
Tolk.Output("AI is now unmuted");
}
}
}
}