ported from perforce
This commit is contained in:
104
DonkeysAndDroids.Godot/OptionsMenu.cs
Normal file
104
DonkeysAndDroids.Godot/OptionsMenu.cs
Normal file
@@ -0,0 +1,104 @@
|
||||
using Godot;
|
||||
using RobotAndDonkey.Game.Pois;
|
||||
|
||||
public partial class OptionsMenu : Control
|
||||
{
|
||||
public override void _Ready()
|
||||
{
|
||||
m_MasterSlider = GetNode<HSlider>("%MasterSlider");
|
||||
m_MusicSlider = GetNode<HSlider>("%MusicSlider");
|
||||
m_SfxSlider = GetNode<HSlider>("%SfxSlider");
|
||||
m_GameSpeedSlider = GetNode<HSlider>("%GameSpeedSlider");
|
||||
m_TutorialScreen = GetNode<TutorialScreen>("%TutorialScreen");
|
||||
|
||||
m_ContinueButton = GetNode<Button>("%ContinueButton");
|
||||
m_ExitToMainButton = GetNode<Button>("%ExitToMainButton");
|
||||
m_ExitGameButton = GetNode<Button>("%ExitGameButton");
|
||||
m_TutorialButton = GetNode<Button>("%TutorialButton");
|
||||
|
||||
m_MasterSlider.ValueChanged += OnMasterSliderChanged;
|
||||
m_MusicSlider.ValueChanged += OnMusicSliderChanged;
|
||||
m_SfxSlider.ValueChanged += OnSfxSliderChanged;
|
||||
m_GameSpeedSlider.ValueChanged += OnGameSpeedSliderChanged;
|
||||
|
||||
m_ContinueButton.Pressed += OnContinuePressed;
|
||||
m_ExitToMainButton.Pressed += OnExitToMainPressed;
|
||||
m_ExitGameButton.Pressed += OnExitGamePressed;
|
||||
m_TutorialButton.Pressed += OnTutorialPressed;
|
||||
|
||||
HideMenu();
|
||||
}
|
||||
|
||||
public void ShowMenu()
|
||||
{
|
||||
Visible = true;
|
||||
|
||||
var settings = SettingsManager.Instance;
|
||||
if (settings != null)
|
||||
{
|
||||
m_MasterSlider.Value = settings.MasterVolumeDb;
|
||||
m_MusicSlider.Value = settings.MusicVolumeDb;
|
||||
m_SfxSlider.Value = settings.SfxVolumeDb;
|
||||
m_GameSpeedSlider.Value = settings.GameSpeed;
|
||||
}
|
||||
m_MasterSlider.GrabFocus();
|
||||
}
|
||||
|
||||
public void HideMenu()
|
||||
{
|
||||
Visible = false;
|
||||
}
|
||||
|
||||
private void OnMasterSliderChanged(double value)
|
||||
{
|
||||
SettingsManager.Instance?.SetMasterVolume((float)value);
|
||||
}
|
||||
|
||||
private void OnMusicSliderChanged(double value)
|
||||
{
|
||||
SettingsManager.Instance?.SetMusicVolume((float)value);
|
||||
}
|
||||
|
||||
private void OnSfxSliderChanged(double value)
|
||||
{
|
||||
SettingsManager.Instance?.SetSfxVolume((float)value);
|
||||
Main.Instance.Music.Play(new Donkey());
|
||||
}
|
||||
|
||||
private void OnGameSpeedSliderChanged(double value)
|
||||
{
|
||||
SettingsManager.Instance?.SetGameSpeed((float)value);
|
||||
}
|
||||
|
||||
private void OnContinuePressed()
|
||||
{
|
||||
HideMenu();
|
||||
}
|
||||
|
||||
private void OnExitToMainPressed()
|
||||
{
|
||||
Main.Instance.StartMetaGame();
|
||||
HideMenu();
|
||||
}
|
||||
|
||||
private void OnExitGamePressed()
|
||||
{
|
||||
GetTree().Quit();
|
||||
}
|
||||
|
||||
private void OnTutorialPressed()
|
||||
{
|
||||
m_TutorialScreen.Restart();
|
||||
m_TutorialScreen.Visible = true;
|
||||
}
|
||||
|
||||
private TutorialScreen m_TutorialScreen;
|
||||
private Button m_ContinueButton;
|
||||
private Button m_ExitGameButton;
|
||||
private Button m_ExitToMainButton;
|
||||
private Button m_TutorialButton;
|
||||
private HSlider m_MasterSlider;
|
||||
private HSlider m_MusicSlider;
|
||||
private HSlider m_SfxSlider;
|
||||
private HSlider m_GameSpeedSlider;
|
||||
}
|
||||
Reference in New Issue
Block a user