From 872939454ff8cd5ea7f8a7c37f21f7281fb5ff29 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 12 Oct 2025 17:13:00 +0900 Subject: [PATCH] Fixed #11278 / FPS limit changes on iOS --- core/assets/bundles/bundle.properties | 1 - core/src/mindustry/ClientLauncher.java | 2 +- .../ui/dialogs/SettingsMenuDialog.java | 20 +++++++++++-------- gradle.properties | 2 +- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 7c120ac81a..4c34d9d6bb 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1277,7 +1277,6 @@ setting.smoothcamera.name = Smooth Camera setting.detach-camera.name = Free Camera setting.detach-camera.description = If enabled, the camera moves independently of the player unit.\nThis setting can be assigned a hotkey. setting.vsync.name = VSync -setting.iosuncapfps.name = High Refresh Rate setting.pixelate.name = Pixelate setting.minimap.name = Show Minimap setting.coreitems.name = Display Core Items diff --git a/core/src/mindustry/ClientLauncher.java b/core/src/mindustry/ClientLauncher.java index 91a8754457..4675996140 100644 --- a/core/src/mindustry/ClientLauncher.java +++ b/core/src/mindustry/ClientLauncher.java @@ -214,7 +214,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform public void update(){ PerfCounter.update.begin(); - int targetfps = Core.settings.getInt("fpscap", 120); + int targetfps = ios ? 0 : Core.settings.getInt("fpscap", 120); boolean changed = lastTargetFps != targetfps && lastTargetFps != -1; boolean limitFps = targetfps > 0 && targetfps <= 240; diff --git a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java index f494ba2c61..8fafcebdb3 100644 --- a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -386,7 +386,18 @@ public class SettingsMenuDialog extends BaseDialog{ graphics.sliderPref("bloomintensity", 6, 0, 16, i -> (int)(i/4f * 100f) + "%"); graphics.sliderPref("bloomblur", 2, 1, 16, i -> i + "x"); - graphics.sliderPref("fpscap", 240, 10, 245, 5, s -> (s > 240 ? Core.bundle.get("setting.fpscap.none") : Core.bundle.format("setting.fpscap.text", s))); + graphics.sliderPref("fpscap", 240, 10, 245, 5, s -> { + if(ios){ + Core.graphics.setPreferredFPS(s > 240 ? 0 : s); + } + return (s > 240 ? Core.bundle.get("setting.fpscap.none") : Core.bundle.format("setting.fpscap.text", s)); + }); + + if(ios){ + int value = Core.settings.getInt("fpscap", 240); + Core.graphics.setPreferredFPS(value > 240 ? 0 : value); + } + graphics.sliderPref("chatopacity", 100, 0, 100, 5, s -> s + "%"); graphics.sliderPref("lasersopacity", 100, 0, 100, 5, s -> { if(ui.settings != null){ @@ -412,13 +423,6 @@ public class SettingsMenuDialog extends BaseDialog{ return s + "%"; }); - if(ios){ - graphics.checkPref("iosuncapfps", false, b -> Core.graphics.setPreferredFPS(b ? 0 : 60)); - if(Core.settings.getBool("iosuncapfps")){ - Core.graphics.setPreferredFPS(0); - } - } - if(!mobile){ graphics.checkPref("vsync", true, b -> Core.graphics.setVSync(b)); graphics.checkPref("fullscreen", false, b -> { diff --git a/gradle.properties b/gradle.properties index 3dcf556b4a..2b92d79588 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,4 +26,4 @@ org.gradle.caching=true org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 android.enableR8.fullMode=false -archash=9a366d8349 +archash=8bbe39d0f6