From 4056c485450cc57a7380a6945d1a00df38d0895c Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Mon, 22 Jan 2024 13:42:30 -0500 Subject: [PATCH] v2.3.1: updated libGDX to 1.12.1 and mobiVM to 2.3.20 --- .../main/java/com/watabou/input/InputHandler.java | 11 ++++++++++- .../main/java/com/watabou/utils/PlatformSupport.java | 1 + .../android/AndroidLauncher.java | 2 ++ build.gradle | 4 ++-- desktop/build.gradle | 12 ++++++------ ios/Info.plist | 2 +- ios/robovm.xml | 1 - .../shatteredpixeldungeon/ios/IOSLauncher.java | 7 +------ .../ios/IOSPlatformSupport.java | 9 +++++++-- 9 files changed, 30 insertions(+), 19 deletions(-) diff --git a/SPD-classes/src/main/java/com/watabou/input/InputHandler.java b/SPD-classes/src/main/java/com/watabou/input/InputHandler.java index 6907c30a1..f9630f421 100644 --- a/SPD-classes/src/main/java/com/watabou/input/InputHandler.java +++ b/SPD-classes/src/main/java/com/watabou/input/InputHandler.java @@ -130,7 +130,16 @@ public class InputHandler extends InputAdapter { } return true; } - + + @Override + public boolean touchCancelled(int screenX, int screenY, int pointer, int button) { + //currently emulating functionality from libGDX 1.11.0, do we keep this? + //in particular this is probably a more graceful way to handle things like system swipes on iOS + //whereas previously they generated garbage inputs sometimes + //which were then fixed in v2.2.2 + return touchUp(screenX, screenY, pointer, button); + } + @Override public synchronized boolean touchDragged(int screenX, int screenY, int pointer) { PointerEvent.addIfExisting(new PointerEvent(screenX, screenY, pointer, PointerEvent.Type.DOWN)); diff --git a/SPD-classes/src/main/java/com/watabou/utils/PlatformSupport.java b/SPD-classes/src/main/java/com/watabou/utils/PlatformSupport.java index cc8a63aff..1a7e96a56 100644 --- a/SPD-classes/src/main/java/com/watabou/utils/PlatformSupport.java +++ b/SPD-classes/src/main/java/com/watabou/utils/PlatformSupport.java @@ -40,6 +40,7 @@ public abstract class PlatformSupport { public void vibrate( int millis ){ //regular GDX vibration by default + //TODO should this trigger controller vibration if available? Gdx.input.vibrate( millis ); } diff --git a/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidLauncher.java b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidLauncher.java index 1f6065610..25a2e2c09 100644 --- a/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidLauncher.java +++ b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidLauncher.java @@ -110,6 +110,8 @@ public class AndroidLauncher extends AndroidApplication { ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT ); } + + //TODO libGDX offers its own immersive mode functionality, do we want to use it? AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); config.depth = 0; diff --git a/build.gradle b/build.gradle index 8855fb2ae..735b45326 100644 --- a/build.gradle +++ b/build.gradle @@ -24,9 +24,9 @@ allprojects { appAndroidMinSDK = 14 appAndroidTargetSDK = 33 - gdxVersion = '1.11.0' + gdxVersion = '1.12.1' gdxControllersVersion = '2.2.4-SNAPSHOT' - robovmVersion = '2.3.19' + robovmVersion = '2.3.20' } version = appVersionName diff --git a/desktop/build.gradle b/desktop/build.gradle index 97f35f7ac..7b019a4f8 100644 --- a/desktop/build.gradle +++ b/desktop/build.gradle @@ -114,12 +114,12 @@ dependencies { implementation "com.badlogicgames.gdx-controllers:gdx-controllers-desktop:$gdxControllersVersion" //we use LWJGL tinyFD directly to display crash messages - implementation "org.lwjgl:lwjgl-tinyfd:3.3.1" - implementation "org.lwjgl:lwjgl-tinyfd:3.3.1:natives-windows" - implementation "org.lwjgl:lwjgl-tinyfd:3.3.1:natives-macos" - implementation "org.lwjgl:lwjgl-tinyfd:3.3.1:natives-macos-arm64" - implementation "org.lwjgl:lwjgl-tinyfd:3.3.1:natives-linux" - implementation "org.lwjgl:lwjgl-tinyfd:3.3.1:natives-linux-arm64" + implementation "org.lwjgl:lwjgl-tinyfd:3.3.3" + implementation "org.lwjgl:lwjgl-tinyfd:3.3.3:natives-windows" + implementation "org.lwjgl:lwjgl-tinyfd:3.3.3:natives-macos" + implementation "org.lwjgl:lwjgl-tinyfd:3.3.3:natives-macos-arm64" + implementation "org.lwjgl:lwjgl-tinyfd:3.3.3:natives-linux" + implementation "org.lwjgl:lwjgl-tinyfd:3.3.3:natives-linux-arm64" implementation project(':services:updates:githubUpdates') implementation project(':services:news:shatteredNews') diff --git a/ios/Info.plist b/ios/Info.plist index f3864fa3e..f3e5367d3 100644 --- a/ios/Info.plist +++ b/ios/Info.plist @@ -31,7 +31,7 @@ UIStatusBarStyle UIStatusBarStyleLightContent MinimumOSVersion - 9.0 + 11.0 UIDeviceFamily 1 diff --git a/ios/robovm.xml b/ios/robovm.xml index 3355ed822..ead7f5be6 100644 --- a/ios/robovm.xml +++ b/ios/robovm.xml @@ -2,7 +2,6 @@ ${appExecutable} ${appMainclass} ios - thumbv7 arm64 ios Info.plist diff --git a/ios/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ios/IOSLauncher.java b/ios/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ios/IOSLauncher.java index 8082e55ad..b5a58a2af 100644 --- a/ios/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ios/IOSLauncher.java +++ b/ios/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ios/IOSLauncher.java @@ -41,13 +41,11 @@ import org.robovm.apple.foundation.NSBundle; import org.robovm.apple.foundation.NSException; import org.robovm.apple.foundation.NSMutableDictionary; import org.robovm.apple.foundation.NSObject; -import org.robovm.apple.foundation.NSProcessInfo; import org.robovm.apple.foundation.NSString; import org.robovm.apple.glkit.GLKViewDrawableColorFormat; import org.robovm.apple.glkit.GLKViewDrawableDepthFormat; import org.robovm.apple.uikit.UIApplication; import org.robovm.apple.uikit.UIRectEdge; -import org.robovm.apple.uikit.UIScreen; import java.io.File; @@ -107,12 +105,9 @@ public class IOSLauncher extends IOSApplication.Delegate { //game has to ignore input from system gestures itself, otherwise there is lag on //every button press on the corner of the screen. Currently this is accomplished via //clearing all pointer events on the first frame after the game is resumed. + //TODO this may not be needed anymore with libgdx 1.12.1 config.screenEdgesDeferringSystemGestures = UIRectEdge.All; - if (NSProcessInfo.getSharedProcessInfo().getOperatingSystemVersion().getMajorVersion() >= 11) { - config.preferredFramesPerSecond = (int)(UIScreen.getMainScreen().getMaximumFramesPerSecond()); - } - CGRect statusBarFrame = UIApplication.getSharedApplication().getStatusBarFrame(); double statusBarHeight = Math.min(statusBarFrame.getWidth(), statusBarFrame.getHeight()); diff --git a/ios/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ios/IOSPlatformSupport.java b/ios/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ios/IOSPlatformSupport.java index e0d589b2b..6d25f3766 100644 --- a/ios/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ios/IOSPlatformSupport.java +++ b/ios/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ios/IOSPlatformSupport.java @@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.ios; import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.Input; import com.badlogic.gdx.backends.iosrobovm.objectal.OALSimpleAudio; import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.g2d.PixmapPacker; @@ -81,8 +82,12 @@ public class IOSPlatformSupport extends PlatformSupport { } public void vibrate( int millis ){ - //gives a short vibrate on iPhone 6+, no vibration otherwise - AudioServices.playSystemSound(1520); + if (Gdx.input.isPeripheralAvailable(Input.Peripheral.HapticFeedback)){ + super.vibrate( millis ); + } else { + //devices without haptics support use a short vibrate on iPhone 6+, no vibration otherwise + AudioServices.playSystemSound(1520); + } } @Override