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
@@ -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(){ public static boolean isControllerConnected(){
return controllersSupported() && Controllers.getCurrent() != null; return controllersSupported() && Controllers.getCurrent() != null;
} }
@@ -26,6 +26,7 @@ import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.PixmapPacker; import com.badlogic.gdx.graphics.g2d.PixmapPacker;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator; import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.watabou.input.ControllerHandler;
import com.watabou.noosa.Game; import com.watabou.noosa.Game;
import java.util.HashMap; import java.util.HashMap;
@@ -39,9 +40,11 @@ public abstract class PlatformSupport {
public abstract boolean connectedToUnmeteredNetwork(); public abstract boolean connectedToUnmeteredNetwork();
public void vibrate( int millis ){ public void vibrate( int millis ){
//regular GDX vibration by default if (ControllerHandler.isControllerConnected()) {
//TODO should this trigger controller vibration if available? ControllerHandler.vibrate(millis);
Gdx.input.vibrate( millis ); } else {
Gdx.input.vibrate( millis );
}
} }
public void setHonorSilentSwitch( boolean value ){ public void setHonorSilentSwitch( boolean value ){
@@ -29,6 +29,7 @@ import com.badlogic.gdx.graphics.g2d.PixmapPacker;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator; import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.shatteredpixel.shatteredpixeldungeon.SPDSettings; import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.watabou.input.ControllerHandler;
import com.watabou.noosa.Game; import com.watabou.noosa.Game;
import com.watabou.utils.PlatformSupport; import com.watabou.utils.PlatformSupport;
@@ -82,8 +83,12 @@ public class IOSPlatformSupport extends PlatformSupport {
} }
public void vibrate( int millis ){ public void vibrate( int millis ){
if (Gdx.input.isPeripheralAvailable(Input.Peripheral.HapticFeedback)){ if (ControllerHandler.isControllerConnected()){
super.vibrate( millis ); if (ControllerHandler.isControllerConnected()) {
ControllerHandler.vibrate(millis);
}
} else if (Gdx.input.isPeripheralAvailable(Input.Peripheral.HapticFeedback)){
Gdx.input.vibrate( millis );
} else { } else {
//devices without haptics support use a short vibrate on iPhone 6+, no vibration otherwise //devices without haptics support use a short vibrate on iPhone 6+, no vibration otherwise
AudioServices.playSystemSound(1520); AudioServices.playSystemSound(1520);