diff --git a/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualControllerConfigurationLoader.java b/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualControllerConfigurationLoader.java index 55e438f75..d66ca8362 100644 --- a/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualControllerConfigurationLoader.java +++ b/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualControllerConfigurationLoader.java @@ -185,6 +185,10 @@ private static AnalogStick createRightStick( private static final int START_BACK_WIDTH = 12; private static final int START_BACK_HEIGHT = 7; + // Make the Guide Menu be in the center of START and BACK menu + private static final int GUIDE_X = START_X-BACK_X; + private static final int GUIDE_Y = START_BACK_Y; + public static void createDefaultLayout(final VirtualController controller, final Context context) { DisplayMetrics screen = context.getResources().getDisplayMetrics(); @@ -333,6 +337,16 @@ public static void createDefaultLayout(final VirtualController controller, final ); } + if(config.showGuideButton){ + controller.addElement(createDigitalButton(VirtualControllerElement.EID_GDB, + ControllerPacket.SPECIAL_BUTTON_FLAG, 0, 1, "GUIDE", -1, controller, context), + screenScale(GUIDE_X, height)+ rightDisplacement, + screenScale(GUIDE_Y, height), + screenScale(START_BACK_WIDTH, height), + screenScale(START_BACK_HEIGHT, height) + ); + } + controller.setOpacity(config.oscOpacity); } diff --git a/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualControllerElement.java b/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualControllerElement.java index cb906dec6..e45e9ddc7 100644 --- a/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualControllerElement.java +++ b/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualControllerElement.java @@ -35,6 +35,7 @@ public abstract class VirtualControllerElement extends View { public static final int EID_RS = 13; public static final int EID_LSB = 14; public static final int EID_RSB = 15; + public static final int EID_GDB = 16; protected VirtualController virtualController; protected final int elementId; diff --git a/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java b/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java index 023bb8f6e..92151b4bb 100644 --- a/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java +++ b/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java @@ -38,6 +38,7 @@ public enum FormatOption { private static final String VIDEO_FORMAT_PREF_STRING = "video_format"; private static final String ONSCREEN_CONTROLLER_PREF_STRING = "checkbox_show_onscreen_controls"; private static final String ONLY_L3_R3_PREF_STRING = "checkbox_only_show_L3R3"; + private static final String SHOW_GUIDE_BUTTON_PREF_STRING = "checkbox_show_guide_button"; private static final String LEGACY_DISABLE_FRAME_DROP_PREF_STRING = "checkbox_disable_frame_drop"; private static final String ENABLE_HDR_PREF_STRING = "checkbox_enable_hdr"; private static final String ENABLE_PIP_PREF_STRING = "checkbox_enable_pip"; @@ -75,6 +76,7 @@ public enum FormatOption { private static final boolean ONSCREEN_CONTROLLER_DEFAULT = false; private static final boolean ONLY_L3_R3_DEFAULT = false; + private static final boolean SHOW_GUIDE_BUTTON_DEFAULT = true; private static final boolean DEFAULT_ENABLE_HDR = false; private static final boolean DEFAULT_ENABLE_PIP = false; private static final boolean DEFAULT_ENABLE_PERF_OVERLAY = false; @@ -120,6 +122,7 @@ public enum FormatOption { public boolean smallIconMode, multiController, usbDriver, flipFaceButtons; public boolean onscreenController; public boolean onlyL3R3; + public boolean showGuideButton; public boolean enableHdr; public boolean enablePip; public boolean enablePerfOverlay; @@ -548,6 +551,7 @@ else if (audioConfig.equals("51")) { config.usbDriver = prefs.getBoolean(USB_DRIVER_PREF_SRING, DEFAULT_USB_DRIVER); config.onscreenController = prefs.getBoolean(ONSCREEN_CONTROLLER_PREF_STRING, ONSCREEN_CONTROLLER_DEFAULT); config.onlyL3R3 = prefs.getBoolean(ONLY_L3_R3_PREF_STRING, ONLY_L3_R3_DEFAULT); + config.showGuideButton = prefs.getBoolean(SHOW_GUIDE_BUTTON_PREF_STRING, SHOW_GUIDE_BUTTON_DEFAULT); config.enableHdr = prefs.getBoolean(ENABLE_HDR_PREF_STRING, DEFAULT_ENABLE_HDR) && !isShieldAtvFirmwareWithBrokenHdr(); config.enablePip = prefs.getBoolean(ENABLE_PIP_PREF_STRING, DEFAULT_ENABLE_PIP); config.enablePerfOverlay = prefs.getBoolean(ENABLE_PERF_OVERLAY_STRING, DEFAULT_ENABLE_PERF_OVERLAY); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 692f7c958..6b43721db 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -205,6 +205,8 @@ Vibrates your device to emulate rumble for the on-screen controls Only show L3 and R3 Hide all virtual buttons except L3 and R3 + Show Guide Button + Show the guide button on screen Clear saved on-screen controls layout Resets all on-screen controls to their default size and position Reset Layout diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 5edc62fa3..bf7974d20 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -148,6 +148,14 @@ android:key="checkbox_only_show_L3R3" android:summary="@string/summary_only_l3r3" android:title="@string/title_only_l3r3" /> +