v2.3.1: added support for controller vibration

This commit is contained in:
Evan Debenham
2024-01-24 14:57:40 -05:00
parent 63ea27a80a
commit bd06d891f6
3 changed files with 19 additions and 5 deletions

View File

@@ -84,6 +84,12 @@ public class ControllerHandler implements ControllerListener {
}
}
public static void vibrate( int millis ){
if (Controllers.getCurrent().canVibrate()) {
Controllers.getCurrent().startVibration(millis, 1f);
}
}
public static boolean isControllerConnected(){
return controllersSupported() && Controllers.getCurrent() != null;
}

View File

@@ -26,6 +26,7 @@ import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.PixmapPacker;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.watabou.input.ControllerHandler;
import com.watabou.noosa.Game;
import java.util.HashMap;
@@ -39,9 +40,11 @@ public abstract class PlatformSupport {
public abstract boolean connectedToUnmeteredNetwork();
public void vibrate( int millis ){
//regular GDX vibration by default
//TODO should this trigger controller vibration if available?
Gdx.input.vibrate( millis );
if (ControllerHandler.isControllerConnected()) {
ControllerHandler.vibrate(millis);
} else {
Gdx.input.vibrate( millis );
}
}
public void setHonorSilentSwitch( boolean value ){

View File

@@ -29,6 +29,7 @@ import com.badlogic.gdx.graphics.g2d.PixmapPacker;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.watabou.input.ControllerHandler;
import com.watabou.noosa.Game;
import com.watabou.utils.PlatformSupport;
@@ -82,8 +83,12 @@ public class IOSPlatformSupport extends PlatformSupport {
}
public void vibrate( int millis ){
if (Gdx.input.isPeripheralAvailable(Input.Peripheral.HapticFeedback)){
super.vibrate( millis );
if (ControllerHandler.isControllerConnected()){
if (ControllerHandler.isControllerConnected()) {
ControllerHandler.vibrate(millis);
}
} else if (Gdx.input.isPeripheralAvailable(Input.Peripheral.HapticFeedback)){
Gdx.input.vibrate( millis );
} else {
//devices without haptics support use a short vibrate on iPhone 6+, no vibration otherwise
AudioServices.playSystemSound(1520);