Finish mobile support

This commit is contained in:
Lncvrt committed 2026-02-24 15:13:48 -07:00
1 parent 39ee3d4982
commit 8094c3f7c2
6 files changed
+39 -25

No files matched your search

+1
View File
@@ -138,6 +138,7 @@ text = "FPS: {}"
script = ExtResource("7_acvyw")
[node name="MobileButtons" type="Node2D" parent="CanvasLayer" unique_id=2096815990]
visible = false
[node name="PauseButton" type="Button" parent="CanvasLayer/MobileButtons" unique_id=1375970461]
z_index = 10
+13 -13
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=3 uid="uid://ctb5p8ymhcshq"]
[gd_scene format=3 uid="uid://ctb5p8ymhcshq"]
[ext_resource type="FontFile" uid="uid://dq7nkk7n7wrq4" path="res://Fonts/Lexend.ttf" id="1_flfri"]
[ext_resource type="Script" uid="uid://bc4miccifwrk0" path="res://Scripts/SceneSwitcher.cs" id="2_yrknh"]
@@ -19,7 +19,7 @@ bg_color = Color(0.830335, 0.830335, 0.830335, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ppjuv"]
bg_color = Color(0.95158, 0.95158, 0.95158, 1)
[node name="Settings" type="Control"]
[node name="Settings" type="Control" unique_id=1371896601]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
@@ -27,7 +27,7 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="Back" type="Button" parent="."]
[node name="Back" type="Button" parent="." unique_id=1537294544]
layout_mode = 1
offset_left = 40.0
offset_top = 40.0
@@ -48,7 +48,7 @@ text = "Back"
script = ExtResource("2_yrknh")
ScenePath = "res://Scenes/MainMenu.tscn"
[node name="SettingsContainer" type="VBoxContainer" parent="."]
[node name="SettingsContainer" type="VBoxContainer" parent="." unique_id=1809676807]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
@@ -65,10 +65,10 @@ theme_override_constants/separation = 179
alignment = 1
script = ExtResource("3_mjqtt")
[node name="Fullscreen" type="Control" parent="SettingsContainer"]
[node name="Fullscreen" type="Control" parent="SettingsContainer" unique_id=499515635]
layout_mode = 2
[node name="CheckBox" type="CheckBox" parent="SettingsContainer/Fullscreen"]
[node name="CheckBox" type="CheckBox" parent="SettingsContainer/Fullscreen" unique_id=2060186930]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
@@ -86,7 +86,7 @@ theme_override_icons/checked = ExtResource("3_w1nw0")
theme_override_icons/unchecked = ExtResource("4_mjqtt")
icon_alignment = 1
[node name="Label" type="Label" parent="SettingsContainer/Fullscreen"]
[node name="Label" type="Label" parent="SettingsContainer/Fullscreen" unique_id=110687269]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
@@ -104,10 +104,10 @@ theme_override_font_sizes/font_size = 76
text = "Fullscreen"
vertical_alignment = 1
[node name="VSync" type="Control" parent="SettingsContainer"]
[node name="VSync" type="Control" parent="SettingsContainer" unique_id=193073500]
layout_mode = 2
[node name="CheckBox" type="CheckBox" parent="SettingsContainer/VSync"]
[node name="CheckBox" type="CheckBox" parent="SettingsContainer/VSync" unique_id=1778104483]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
@@ -125,7 +125,7 @@ theme_override_icons/checked = ExtResource("3_w1nw0")
theme_override_icons/unchecked = ExtResource("4_mjqtt")
icon_alignment = 1
[node name="Label" type="Label" parent="SettingsContainer/VSync"]
[node name="Label" type="Label" parent="SettingsContainer/VSync" unique_id=497093617]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
@@ -143,10 +143,10 @@ theme_override_font_sizes/font_size = 76
text = "Vsync"
vertical_alignment = 1
[node name="ShowFPS" type="Control" parent="SettingsContainer"]
[node name="ShowFPS" type="Control" parent="SettingsContainer" unique_id=446297884]
layout_mode = 2
[node name="CheckBox" type="CheckBox" parent="SettingsContainer/ShowFPS"]
[node name="CheckBox" type="CheckBox" parent="SettingsContainer/ShowFPS" unique_id=1193185044]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
@@ -164,7 +164,7 @@ theme_override_icons/checked = ExtResource("3_w1nw0")
theme_override_icons/unchecked = ExtResource("4_mjqtt")
icon_alignment = 1
[node name="Label" type="Label" parent="SettingsContainer/ShowFPS"]
[node name="Label" type="Label" parent="SettingsContainer/ShowFPS" unique_id=948287068]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
+2
View File
@@ -8,5 +8,7 @@ public partial class PauseMenuContinueButton : Button {
Globals.IsPaused = false;
GetNode<Control>("../..").QueueFree();
if (Utils.IsMobile()) GetNode<Node2D>("/root/Game/CanvasLayer/MobileButtons").Visible = true;
}
}
+8 -4
View File
@@ -13,6 +13,8 @@ public partial class Player : Node2D {
var WindowScale = WindowSize / ScreenSize;
Position = new Vector2(x: DisplayServer.WindowGetSize().X / 2, y: (WindowSize.Y / WindowScale.Y) - 100);
if (Utils.IsMobile()) GetNode<Node2D>("/root/Game/CanvasLayer/MobileButtons").Visible = true;
}
public override void _Process(double delta) {
@@ -23,18 +25,18 @@ public partial class Player : Node2D {
Vector2 Pos = Position;
if (!Globals.IsPaused) {
if ((Input.IsKeyPressed(Key.Left) || Input.IsKeyPressed(Key.A) || doLeft) && Pos.X > ScreenBorders) {
if ((Utils.IsMobile() ? doLeft : Input.IsKeyPressed(Key.Left) || Input.IsKeyPressed(Key.A)) && Pos.X > ScreenBorders) {
GetNode<Sprite2D>("Texture").FlipH = false;
Pos.X -= Globals.MovementSpeed * (float)delta;
}
float ScreenWidth = (WindowSize.X / WindowScale.X) - ScreenBorders;
if ((Input.IsKeyPressed(Key.Right) || Input.IsKeyPressed(Key.D) || doRight) && Pos.X < ScreenWidth) {
if ((Utils.IsMobile() ? doRight : Input.IsKeyPressed(Key.Right) || Input.IsKeyPressed(Key.D)) && Pos.X < ScreenWidth) {
GetNode<Sprite2D>("Texture").FlipH = true;
Pos.X += Globals.MovementSpeed * (float)delta;
}
if ((Input.IsKeyPressed(Key.Space) || doJump) && Pos.Y >= 976) {
if ((Utils.IsMobile() ? doJump : Input.IsKeyPressed(Key.Space)) && Pos.Y >= 976) {
VelocityY = Globals.JumpHeight;
GetNode<AudioStreamPlayer>("JumpSoundPlayer").Play();
}
@@ -79,7 +81,7 @@ public partial class Player : Node2D {
Globals.BerrySpeed = Globals.DefaultBerrySpeed * 2f;
}
if (Input.IsActionJustPressed("EscapeKey")) {
if (!Utils.IsMobile() && Input.IsActionJustPressed("EscapeKey")) {
if (!Globals.IsPaused) {
PackedScene PauseMenu = GD.Load<PackedScene>("res://Prefabs/PauseMenu.tscn");
@@ -112,6 +114,8 @@ public partial class Player : Node2D {
private void MobileJumpMoveDown() => doJump = true;
private void MobileJumpMoveUp() => doJump = false;
private void MobilePausePressed() {
if (Utils.IsMobile()) GetNode<Node2D>("/root/Game/CanvasLayer/MobileButtons").Visible = false;
PackedScene PauseMenu = GD.Load<PackedScene>("res://Prefabs/PauseMenu.tscn");
Control PauseMenuInstance = PauseMenu.Instantiate<Control>();
+11 -7
View File
@@ -9,26 +9,30 @@ public partial class SettingsContainer : VBoxContainer
public override void _Ready() {
List<string> settings = Utils.LoadSettings();
string fullscreen = settings.ElementAtOrDefault(0) ?? "1";
string vsync = settings.ElementAtOrDefault(1) ?? "1";
string showfps = settings.ElementAtOrDefault(2) ?? "0";
GetNode<CheckBox>("Fullscreen/CheckBox").ButtonPressed = fullscreen == "1";
GetNode<CheckBox>("VSync/CheckBox").ButtonPressed = vsync == "1";
if (Utils.IsMobile()) {
GetNode<Control>("Fullscreen").Visible = false;
GetNode<Control>("VSync").Visible = false;
} else {
string fullscreen = settings.ElementAtOrDefault(0) ?? "1";
string vsync = settings.ElementAtOrDefault(1) ?? "1";
GetNode<CheckBox>("Fullscreen/CheckBox").ButtonPressed = fullscreen == "1";
GetNode<CheckBox>("VSync/CheckBox").ButtonPressed = vsync == "1";
}
GetNode<CheckBox>("ShowFPS/CheckBox").ButtonPressed = showfps == "1";
ignoreToggle = false;
}
public static void Fullscreen_Toggled(bool on)
{
if (ignoreToggle) return;
if (ignoreToggle || Utils.IsMobile()) return;
Toggle(0, on);
Utils.ToggleFullscreen(on);
}
public static void VSync_Toggled(bool on)
{
if (ignoreToggle) return;
if (ignoreToggle || Utils.IsMobile()) return;
Toggle(1, on);
Utils.ToggleVSync(on);
}
+4 -1
View File
@@ -5,6 +5,7 @@ using Godot;
public class Utils {
public static void ToggleFullscreen(bool on, List<string> settings)
{
if (IsMobile()) return;
DisplayServer.WindowSetMode(on ? DisplayServer.WindowMode.Fullscreen : DisplayServer.WindowMode.Maximized);
string vsync = settings.ElementAtOrDefault(1) ?? "1";
@@ -19,7 +20,7 @@ public class Utils {
public static void ToggleVSync(bool on)
{
DisplayServer.WindowSetVsyncMode(on ? DisplayServer.VSyncMode.Enabled : DisplayServer.VSyncMode.Disabled);
if (!IsMobile()) DisplayServer.WindowSetVsyncMode(on ? DisplayServer.VSyncMode.Enabled : DisplayServer.VSyncMode.Disabled);
}
public static List<string> LoadSettings() {
@@ -27,4 +28,6 @@ public class Utils {
List<string> values = [.. value.Split(':')];
return values;
}
public static bool IsMobile() => OS.GetName() == "iOS" || OS.GetName() == "Android";
}