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;
|
|
|
|
|
2024-08-19 17:21:10 +02:00
|
|
|
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
|
|
|
}
|
|
|
|
}
|