gmtk24/scripts/PauseMenu.cs

71 lines
2.4 KiB
C#
Raw Normal View History

2024-08-18 18:06:01 +02:00
using Godot;
namespace Gmtk24 {
public partial class PauseMenu : Control {
2024-08-19 15:51:51 +02:00
[Export]
public Control InitialFocusTarget;
[ExportCategory("Setting controls")]
[Export]
public Range VolumeSlider;
[Export]
public Range CameraSensitivityX;
[Export]
public Range CameraSensitivityY;
[Export]
public BaseButton CameraInvertX;
[Export]
public BaseButton CameraInvertY;
2024-08-20 14:28:35 +02:00
[Export]
public Table Table;
2024-08-18 20:06:11 +02:00
private bool Opened = false;
2024-08-18 18:06:01 +02:00
public override void _Ready() {
2024-08-19 15:51:51 +02:00
VolumeSlider.Value = UserSettings.Singleton.Volume;
2024-08-19 17:19:03 +02:00
VolumeSlider.ValueChanged += (value) => UserSettings.Singleton.SetVolume((float)value);
2024-08-19 15:51:51 +02:00
CameraSensitivityX.Value = UserSettings.Singleton.CameraSensitivityX;
CameraSensitivityX.ValueChanged += (value) => UserSettings.Singleton.CameraSensitivityX = (float)value;
CameraSensitivityY.Value = UserSettings.Singleton.CameraSensitivityY;
CameraSensitivityY.ValueChanged += (value) => UserSettings.Singleton.CameraSensitivityY = (float)value;
CameraInvertX.ButtonPressed = UserSettings.Singleton.CameraInvertX;
CameraInvertX.Toggled += (on) => UserSettings.Singleton.CameraInvertX = on;
CameraInvertY.ButtonPressed = UserSettings.Singleton.CameraInvertY;
CameraInvertY.Toggled += (on) => UserSettings.Singleton.CameraInvertY = on;
Open();
2024-08-18 18:06:01 +02:00
}
public override void _Input(InputEvent @event) {
2024-08-20 14:28:35 +02:00
if (@event.IsActionPressed("toggle_pause_menu") && (!Table.Orbit?.IsEnabled ?? true)) {
2024-08-19 15:51:51 +02:00
if (Opened) {
Close();
} else {
Open();
2024-08-18 18:06:01 +02:00
}
}
}
public void Open() {
Visible = true;
Input.MouseMode = Input.MouseModeEnum.Visible;
2024-08-19 15:51:51 +02:00
GetTree().Paused = true;
if (IsInstanceValid(InitialFocusTarget)) {
InitialFocusTarget.GrabFocus();
}
2024-08-18 20:06:11 +02:00
Opened = true;
2024-08-18 18:06:01 +02:00
}
public void Close() {
2024-08-19 15:51:51 +02:00
GetTree().Paused = false;
2024-08-18 18:06:01 +02:00
Input.MouseMode = Input.MouseModeEnum.Captured;
Visible = false;
2024-08-18 20:06:11 +02:00
Opened = false;
2024-08-18 18:06:01 +02:00
}
2024-08-19 15:51:51 +02:00
public void Quit() {
GetTree().Quit();
}
2024-08-18 18:06:01 +02:00
}
}