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