mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	android: Add a separate foldable layout set
This commit is contained in:
		@@ -332,6 +332,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
 | 
				
			|||||||
                if (it.orientation == FoldingFeature.Orientation.HORIZONTAL) {
 | 
					                if (it.orientation == FoldingFeature.Orientation.HORIZONTAL) {
 | 
				
			||||||
                    binding.emulationContainer.layoutParams.height = it.bounds.top
 | 
					                    binding.emulationContainer.layoutParams.height = it.bounds.top
 | 
				
			||||||
                    // Prevent touch regions from being displayed in the hinge
 | 
					                    // Prevent touch regions from being displayed in the hinge
 | 
				
			||||||
 | 
					                    binding.surfaceInputOverlay.isInFoldableLayout = true
 | 
				
			||||||
                    binding.overlayContainer.layoutParams.height = it.bounds.bottom - 48.toPx
 | 
					                    binding.overlayContainer.layoutParams.height = it.bounds.bottom - 48.toPx
 | 
				
			||||||
                    binding.overlayContainer.updatePadding(0, 0, 0, 24.toPx)
 | 
					                    binding.overlayContainer.updatePadding(0, 0, 0, 24.toPx)
 | 
				
			||||||
                    binding.inGameMenu.layoutParams.height = it.bounds.bottom
 | 
					                    binding.inGameMenu.layoutParams.height = it.bounds.bottom
 | 
				
			||||||
@@ -344,6 +345,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
 | 
				
			|||||||
            binding.emulationContainer.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT
 | 
					            binding.emulationContainer.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT
 | 
				
			||||||
            binding.overlayContainer.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT
 | 
					            binding.overlayContainer.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT
 | 
				
			||||||
            binding.overlayContainer.updatePadding(0, 0, 0, 0)
 | 
					            binding.overlayContainer.updatePadding(0, 0, 0, 0)
 | 
				
			||||||
 | 
					            binding.surfaceInputOverlay.isInFoldableLayout = false
 | 
				
			||||||
            binding.inGameMenu.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT
 | 
					            binding.inGameMenu.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT
 | 
				
			||||||
            updateScreenLayout()
 | 
					            updateScreenLayout()
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -553,10 +553,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : SurfaceView(context
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private fun defaultOverlay() {
 | 
					    private fun defaultOverlay() {
 | 
				
			||||||
        if (!preferences.getBoolean(Settings.PREF_OVERLAY_INIT, false)) {
 | 
					        if (!preferences.getBoolean(Settings.PREF_OVERLAY_INIT, false)) {
 | 
				
			||||||
            if (orientation == portrait)
 | 
					            defaultOverlayByLayout(orientation)
 | 
				
			||||||
                defaultOverlayPortrait()
 | 
					 | 
				
			||||||
            else
 | 
					 | 
				
			||||||
                defaultOverlayLandscape()
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        resetButtonPlacement()
 | 
					        resetButtonPlacement()
 | 
				
			||||||
@@ -566,265 +563,239 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : SurfaceView(context
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fun resetButtonPlacement() {
 | 
					    fun resetButtonPlacement() {
 | 
				
			||||||
        if (orientation == portrait)
 | 
					        defaultOverlayByLayout(orientation)
 | 
				
			||||||
            defaultOverlayPortrait()
 | 
					 | 
				
			||||||
        else
 | 
					 | 
				
			||||||
            defaultOverlayLandscape()
 | 
					 | 
				
			||||||
        refreshControls()
 | 
					        refreshControls()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private fun defaultOverlayPortrait() {
 | 
					    private val landscapeResources = arrayOf(
 | 
				
			||||||
        // Each value represents the position of the button in relation to the screen size without insets.
 | 
					        R.integer.SWITCH_BUTTON_A_X,
 | 
				
			||||||
        preferences.edit()
 | 
					        R.integer.SWITCH_BUTTON_A_Y,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_BUTTON_B_X,
 | 
				
			||||||
                ButtonType.BUTTON_A.toString() + "$portrait-X",
 | 
					        R.integer.SWITCH_BUTTON_B_Y,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_A_PORTRAIT_X).toFloat() / 1000
 | 
					        R.integer.SWITCH_BUTTON_X_X,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_BUTTON_X_Y,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_BUTTON_Y_X,
 | 
				
			||||||
                ButtonType.BUTTON_A.toString() + "$portrait-Y",
 | 
					        R.integer.SWITCH_BUTTON_Y_Y,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_A_PORTRAIT_Y).toFloat() / 1000
 | 
					        R.integer.SWITCH_TRIGGER_ZL_X,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_TRIGGER_ZL_Y,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_TRIGGER_ZR_X,
 | 
				
			||||||
                ButtonType.BUTTON_B.toString() + "$portrait-X",
 | 
					        R.integer.SWITCH_TRIGGER_ZR_Y,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_B_PORTRAIT_X).toFloat() / 1000
 | 
					        R.integer.SWITCH_BUTTON_DPAD_X,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_BUTTON_DPAD_Y,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_TRIGGER_L_X,
 | 
				
			||||||
                ButtonType.BUTTON_B.toString() + "$portrait-Y",
 | 
					        R.integer.SWITCH_TRIGGER_L_Y,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_B_PORTRAIT_Y).toFloat() / 1000
 | 
					        R.integer.SWITCH_TRIGGER_R_X,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_TRIGGER_R_Y,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_BUTTON_PLUS_X,
 | 
				
			||||||
                ButtonType.BUTTON_X.toString() + "$portrait-X",
 | 
					        R.integer.SWITCH_BUTTON_PLUS_Y,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_X_PORTRAIT_X).toFloat() / 1000
 | 
					        R.integer.SWITCH_BUTTON_MINUS_X,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_BUTTON_MINUS_Y,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_BUTTON_HOME_X,
 | 
				
			||||||
                ButtonType.BUTTON_X.toString() + "$portrait-Y",
 | 
					        R.integer.SWITCH_BUTTON_HOME_Y,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_X_PORTRAIT_Y).toFloat() / 1000
 | 
					        R.integer.SWITCH_BUTTON_CAPTURE_X,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_BUTTON_CAPTURE_Y,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_STICK_R_X,
 | 
				
			||||||
                ButtonType.BUTTON_Y.toString() + "$portrait-X",
 | 
					        R.integer.SWITCH_STICK_R_Y,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_Y_PORTRAIT_X).toFloat() / 1000
 | 
					        R.integer.SWITCH_STICK_L_X,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_STICK_L_Y
 | 
				
			||||||
            .putFloat(
 | 
					    )
 | 
				
			||||||
                ButtonType.BUTTON_Y.toString() + "$portrait-Y",
 | 
					
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_Y_PORTRAIT_Y).toFloat() / 1000
 | 
					    private val portraitResources = arrayOf(
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_BUTTON_A_PORTRAIT_X,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_BUTTON_A_PORTRAIT_Y,
 | 
				
			||||||
                ButtonType.TRIGGER_ZL.toString() + "$portrait-X",
 | 
					        R.integer.SWITCH_BUTTON_B_PORTRAIT_X,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_ZL_PORTRAIT_X).toFloat() / 1000
 | 
					        R.integer.SWITCH_BUTTON_B_PORTRAIT_Y,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_BUTTON_X_PORTRAIT_X,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_BUTTON_X_PORTRAIT_Y,
 | 
				
			||||||
                ButtonType.TRIGGER_ZL.toString() + "$portrait-Y",
 | 
					        R.integer.SWITCH_BUTTON_Y_PORTRAIT_X,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_ZL_PORTRAIT_Y).toFloat() / 1000
 | 
					        R.integer.SWITCH_BUTTON_Y_PORTRAIT_Y,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_TRIGGER_ZL_PORTRAIT_X,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_TRIGGER_ZL_PORTRAIT_Y,
 | 
				
			||||||
                ButtonType.TRIGGER_ZR.toString() + "$portrait-X",
 | 
					        R.integer.SWITCH_TRIGGER_ZR_PORTRAIT_X,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_ZR_PORTRAIT_X).toFloat() / 1000
 | 
					        R.integer.SWITCH_TRIGGER_ZR_PORTRAIT_Y,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_BUTTON_DPAD_PORTRAIT_X,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_BUTTON_DPAD_PORTRAIT_Y,
 | 
				
			||||||
                ButtonType.TRIGGER_ZR.toString() + "$portrait-Y",
 | 
					        R.integer.SWITCH_TRIGGER_L_PORTRAIT_X,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_ZR_PORTRAIT_Y).toFloat() / 1000
 | 
					        R.integer.SWITCH_TRIGGER_L_PORTRAIT_Y,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_TRIGGER_R_PORTRAIT_X,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_TRIGGER_R_PORTRAIT_Y,
 | 
				
			||||||
                ButtonType.DPAD_UP.toString() + "$portrait-X",
 | 
					        R.integer.SWITCH_BUTTON_PLUS_PORTRAIT_X,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_DPAD_PORTRAIT_X).toFloat() / 1000
 | 
					        R.integer.SWITCH_BUTTON_PLUS_PORTRAIT_Y,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_BUTTON_MINUS_PORTRAIT_X,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_BUTTON_MINUS_PORTRAIT_Y,
 | 
				
			||||||
                ButtonType.DPAD_UP.toString() + "$portrait-Y",
 | 
					        R.integer.SWITCH_BUTTON_HOME_PORTRAIT_X,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_DPAD_PORTRAIT_Y).toFloat() / 1000
 | 
					        R.integer.SWITCH_BUTTON_HOME_PORTRAIT_Y,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_BUTTON_CAPTURE_PORTRAIT_X,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_BUTTON_CAPTURE_PORTRAIT_Y,
 | 
				
			||||||
                ButtonType.TRIGGER_L.toString() + "$portrait-X",
 | 
					        R.integer.SWITCH_STICK_R_PORTRAIT_X,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_L_PORTRAIT_X).toFloat() / 1000
 | 
					        R.integer.SWITCH_STICK_R_PORTRAIT_Y,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_STICK_L_PORTRAIT_X,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_STICK_L_PORTRAIT_Y
 | 
				
			||||||
                ButtonType.TRIGGER_L.toString() + "$portrait-Y",
 | 
					    )
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_L_PORTRAIT_Y).toFloat() / 1000
 | 
					
 | 
				
			||||||
            )
 | 
					    private val foldableResources = arrayOf(
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_BUTTON_A_FOLDABLE_X,
 | 
				
			||||||
                ButtonType.TRIGGER_R.toString() + "$portrait-X",
 | 
					        R.integer.SWITCH_BUTTON_A_FOLDABLE_Y,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_R_PORTRAIT_X).toFloat() / 1000
 | 
					        R.integer.SWITCH_BUTTON_B_FOLDABLE_X,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_BUTTON_B_FOLDABLE_Y,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_BUTTON_X_FOLDABLE_X,
 | 
				
			||||||
                ButtonType.TRIGGER_R.toString() + "$portrait-Y",
 | 
					        R.integer.SWITCH_BUTTON_X_FOLDABLE_Y,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_R_PORTRAIT_Y).toFloat() / 1000
 | 
					        R.integer.SWITCH_BUTTON_Y_FOLDABLE_X,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_BUTTON_Y_FOLDABLE_Y,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_TRIGGER_ZL_FOLDABLE_X,
 | 
				
			||||||
                ButtonType.BUTTON_PLUS.toString() + "$portrait-X",
 | 
					        R.integer.SWITCH_TRIGGER_ZL_FOLDABLE_Y,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_PLUS_PORTRAIT_X).toFloat() / 1000
 | 
					        R.integer.SWITCH_TRIGGER_ZR_FOLDABLE_X,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_TRIGGER_ZR_FOLDABLE_Y,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_BUTTON_DPAD_FOLDABLE_X,
 | 
				
			||||||
                ButtonType.BUTTON_PLUS.toString() + "$portrait-Y",
 | 
					        R.integer.SWITCH_BUTTON_DPAD_FOLDABLE_Y,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_PLUS_PORTRAIT_Y).toFloat() / 1000
 | 
					        R.integer.SWITCH_TRIGGER_L_FOLDABLE_X,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_TRIGGER_L_FOLDABLE_Y,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_TRIGGER_R_FOLDABLE_X,
 | 
				
			||||||
                ButtonType.BUTTON_MINUS.toString() + "$portrait-X",
 | 
					        R.integer.SWITCH_TRIGGER_R_FOLDABLE_Y,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_MINUS_PORTRAIT_X).toFloat() / 1000
 | 
					        R.integer.SWITCH_BUTTON_PLUS_FOLDABLE_X,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_BUTTON_PLUS_FOLDABLE_Y,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_BUTTON_MINUS_FOLDABLE_X,
 | 
				
			||||||
                ButtonType.BUTTON_MINUS.toString() + "$portrait-Y",
 | 
					        R.integer.SWITCH_BUTTON_MINUS_FOLDABLE_Y,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_MINUS_PORTRAIT_Y).toFloat() / 1000
 | 
					        R.integer.SWITCH_BUTTON_HOME_FOLDABLE_X,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_BUTTON_HOME_FOLDABLE_Y,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_BUTTON_CAPTURE_FOLDABLE_X,
 | 
				
			||||||
                ButtonType.BUTTON_HOME.toString() + "$portrait-X",
 | 
					        R.integer.SWITCH_BUTTON_CAPTURE_FOLDABLE_Y,
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_HOME_PORTRAIT_X).toFloat() / 1000
 | 
					        R.integer.SWITCH_STICK_R_FOLDABLE_X,
 | 
				
			||||||
            )
 | 
					        R.integer.SWITCH_STICK_R_FOLDABLE_Y,
 | 
				
			||||||
            .putFloat(
 | 
					        R.integer.SWITCH_STICK_L_FOLDABLE_X,
 | 
				
			||||||
                ButtonType.BUTTON_HOME.toString() + "$portrait-Y",
 | 
					        R.integer.SWITCH_STICK_L_FOLDABLE_Y
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_HOME_PORTRAIT_Y).toFloat() / 1000
 | 
					    )
 | 
				
			||||||
            )
 | 
					
 | 
				
			||||||
            .putFloat(
 | 
					    private fun getResourceValue(descriptor: String, position: Int) : Float {
 | 
				
			||||||
                ButtonType.BUTTON_CAPTURE.toString() + "$portrait-X",
 | 
					        return when (descriptor) {
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_CAPTURE_PORTRAIT_X)
 | 
					            portrait -> resources.getInteger(portraitResources[position]).toFloat() / 1000
 | 
				
			||||||
                    .toFloat() / 1000
 | 
					            foldable -> resources.getInteger(foldableResources[position]).toFloat() / 1000
 | 
				
			||||||
            )
 | 
					            else -> resources.getInteger(landscapeResources[position]).toFloat() / 1000
 | 
				
			||||||
            .putFloat(
 | 
					        }
 | 
				
			||||||
                ButtonType.BUTTON_CAPTURE.toString() + "$portrait-Y",
 | 
					 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_CAPTURE_PORTRAIT_Y)
 | 
					 | 
				
			||||||
                    .toFloat() / 1000
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
            .putFloat(
 | 
					 | 
				
			||||||
                ButtonType.STICK_R.toString() + "$portrait-X",
 | 
					 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_STICK_R_PORTRAIT_X).toFloat() / 1000
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
            .putFloat(
 | 
					 | 
				
			||||||
                ButtonType.STICK_R.toString() + "$portrait-Y",
 | 
					 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_STICK_R_PORTRAIT_Y).toFloat() / 1000
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
            .putFloat(
 | 
					 | 
				
			||||||
                ButtonType.STICK_L.toString() + "$portrait-X",
 | 
					 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_STICK_L_PORTRAIT_X).toFloat() / 1000
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
            .putFloat(
 | 
					 | 
				
			||||||
                ButtonType.STICK_L.toString() + "$portrait-Y",
 | 
					 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_STICK_L_PORTRAIT_Y).toFloat() / 1000
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
            .apply()
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private fun defaultOverlayLandscape() {
 | 
					    private fun defaultOverlayByLayout(descriptor: String) {
 | 
				
			||||||
        // Each value represents the position of the button in relation to the screen size without insets.
 | 
					        // Each value represents the position of the button in relation to the screen size without insets.
 | 
				
			||||||
        preferences.edit()
 | 
					        preferences.edit()
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_A.toString() + "-X",
 | 
					                ButtonType.BUTTON_A.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_A_X).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 0)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_A.toString() + "-Y",
 | 
					                ButtonType.BUTTON_A.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_A_Y).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 1)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_B.toString() + "-X",
 | 
					                ButtonType.BUTTON_B.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_B_X).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 2)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_B.toString() + "-Y",
 | 
					                ButtonType.BUTTON_B.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_B_Y).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 3)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_X.toString() + "-X",
 | 
					                ButtonType.BUTTON_X.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_X_X).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 4)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_X.toString() + "-Y",
 | 
					                ButtonType.BUTTON_X.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_X_Y).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 5)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_Y.toString() + "-X",
 | 
					                ButtonType.BUTTON_Y.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_Y_X).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 6)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_Y.toString() + "-Y",
 | 
					                ButtonType.BUTTON_Y.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_Y_Y).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 7)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.TRIGGER_ZL.toString() + "-X",
 | 
					                ButtonType.TRIGGER_ZL.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_ZL_X).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 8)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.TRIGGER_ZL.toString() + "-Y",
 | 
					                ButtonType.TRIGGER_ZL.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_ZL_Y).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 9)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.TRIGGER_ZR.toString() + "-X",
 | 
					                ButtonType.TRIGGER_ZR.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_ZR_X).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 10)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.TRIGGER_ZR.toString() + "-Y",
 | 
					                ButtonType.TRIGGER_ZR.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_ZR_Y).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 11)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.DPAD_UP.toString() + "-X",
 | 
					                ButtonType.DPAD_UP.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_DPAD_X).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 12)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.DPAD_UP.toString() + "-Y",
 | 
					                ButtonType.DPAD_UP.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_DPAD_Y).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 13)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.TRIGGER_L.toString() + "-X",
 | 
					                ButtonType.TRIGGER_L.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_L_X).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 14)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.TRIGGER_L.toString() + "-Y",
 | 
					                ButtonType.TRIGGER_L.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_L_Y).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 15)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.TRIGGER_R.toString() + "-X",
 | 
					                ButtonType.TRIGGER_R.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_R_X).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 16)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.TRIGGER_R.toString() + "-Y",
 | 
					                ButtonType.TRIGGER_R.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_TRIGGER_R_Y).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 17)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_PLUS.toString() + "-X",
 | 
					                ButtonType.BUTTON_PLUS.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_PLUS_X).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 18)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_PLUS.toString() + "-Y",
 | 
					                ButtonType.BUTTON_PLUS.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_PLUS_Y).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 19)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_MINUS.toString() + "-X",
 | 
					                ButtonType.BUTTON_MINUS.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_MINUS_X).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 20)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_MINUS.toString() + "-Y",
 | 
					                ButtonType.BUTTON_MINUS.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_MINUS_Y).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 21)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_HOME.toString() + "-X",
 | 
					                ButtonType.BUTTON_HOME.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_HOME_X).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 22)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_HOME.toString() + "-Y",
 | 
					                ButtonType.BUTTON_HOME.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_HOME_Y).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 23)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_CAPTURE.toString() + "-X",
 | 
					                ButtonType.BUTTON_CAPTURE.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_CAPTURE_X)
 | 
					                getResourceValue(descriptor, 24)
 | 
				
			||||||
                    .toFloat() / 1000
 | 
					 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.BUTTON_CAPTURE.toString() + "-Y",
 | 
					                ButtonType.BUTTON_CAPTURE.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_BUTTON_CAPTURE_Y)
 | 
					                getResourceValue(descriptor, 25)
 | 
				
			||||||
                    .toFloat() / 1000
 | 
					 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.STICK_R.toString() + "-X",
 | 
					                ButtonType.STICK_R.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_STICK_R_X).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 26)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.STICK_R.toString() + "-Y",
 | 
					                ButtonType.STICK_R.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_STICK_R_Y).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 27)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.STICK_L.toString() + "-X",
 | 
					                ButtonType.STICK_L.toString() + "$descriptor-X",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_STICK_L_X).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 28)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .putFloat(
 | 
					            .putFloat(
 | 
				
			||||||
                ButtonType.STICK_L.toString() + "-Y",
 | 
					                ButtonType.STICK_L.toString() + "$descriptor-Y",
 | 
				
			||||||
                resources.getInteger(R.integer.SWITCH_STICK_L_Y).toFloat() / 1000
 | 
					                getResourceValue(descriptor, 29)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .apply()
 | 
					            .apply()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -835,18 +806,29 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : SurfaceView(context
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    override fun onConfigurationChanged(newConfig: Configuration?) {
 | 
					    override fun onConfigurationChanged(newConfig: Configuration?) {
 | 
				
			||||||
        super.onConfigurationChanged(newConfig)
 | 
					        super.onConfigurationChanged(newConfig)
 | 
				
			||||||
        orientation =
 | 
					        if (!isInFoldableLayout) {
 | 
				
			||||||
            if (newConfig?.orientation == Configuration.ORIENTATION_PORTRAIT)
 | 
					            orientation = if (newConfig?.orientation == Configuration.ORIENTATION_PORTRAIT)
 | 
				
			||||||
                portrait
 | 
					                portrait
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
                ""
 | 
					                ""
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var isInFoldableLayout : Boolean = false
 | 
				
			||||||
 | 
					        set(value) {
 | 
				
			||||||
 | 
					            if (value)
 | 
				
			||||||
 | 
					                orientation = foldable
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                onConfigurationChanged(resources.configuration)
 | 
				
			||||||
 | 
					            field = value
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    companion object {
 | 
					    companion object {
 | 
				
			||||||
        private val preferences: SharedPreferences =
 | 
					        private val preferences: SharedPreferences =
 | 
				
			||||||
            PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
 | 
					            PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private const val portrait = "-Portrait"
 | 
					        private const val portrait = "-Portrait"
 | 
				
			||||||
 | 
					        private const val foldable = "-Foldable"
 | 
				
			||||||
        private var orientation = ""
 | 
					        private var orientation = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /**
 | 
					        /**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,15 +3,15 @@
 | 
				
			|||||||
    <integer name="game_title_lines">2</integer>
 | 
					    <integer name="game_title_lines">2</integer>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- Default SWITCH portrait layout -->
 | 
					    <!-- Default SWITCH portrait layout -->
 | 
				
			||||||
    <integer name="SWITCH_BUTTON_A_PORTRAIT_X">830</integer>
 | 
					    <integer name="SWITCH_BUTTON_A_PORTRAIT_X">840</integer>
 | 
				
			||||||
    <integer name="SWITCH_BUTTON_A_PORTRAIT_Y">820</integer>
 | 
					    <integer name="SWITCH_BUTTON_A_PORTRAIT_Y">820</integer>
 | 
				
			||||||
    <integer name="SWITCH_BUTTON_B_PORTRAIT_X">730</integer>
 | 
					    <integer name="SWITCH_BUTTON_B_PORTRAIT_X">740</integer>
 | 
				
			||||||
    <integer name="SWITCH_BUTTON_B_PORTRAIT_Y">870</integer>
 | 
					    <integer name="SWITCH_BUTTON_B_PORTRAIT_Y">860</integer>
 | 
				
			||||||
    <integer name="SWITCH_BUTTON_X_PORTRAIT_X">730</integer>
 | 
					    <integer name="SWITCH_BUTTON_X_PORTRAIT_X">740</integer>
 | 
				
			||||||
    <integer name="SWITCH_BUTTON_X_PORTRAIT_Y">770</integer>
 | 
					    <integer name="SWITCH_BUTTON_X_PORTRAIT_Y">780</integer>
 | 
				
			||||||
    <integer name="SWITCH_BUTTON_Y_PORTRAIT_X">630</integer>
 | 
					    <integer name="SWITCH_BUTTON_Y_PORTRAIT_X">640</integer>
 | 
				
			||||||
    <integer name="SWITCH_BUTTON_Y_PORTRAIT_Y">820</integer>
 | 
					    <integer name="SWITCH_BUTTON_Y_PORTRAIT_Y">820</integer>
 | 
				
			||||||
    <integer name="SWITCH_STICK_L_PORTRAIT_X">170</integer>
 | 
					    <integer name="SWITCH_STICK_L_PORTRAIT_X">180</integer>
 | 
				
			||||||
    <integer name="SWITCH_STICK_L_PORTRAIT_Y">640</integer>
 | 
					    <integer name="SWITCH_STICK_L_PORTRAIT_Y">640</integer>
 | 
				
			||||||
    <integer name="SWITCH_STICK_R_PORTRAIT_X">820</integer>
 | 
					    <integer name="SWITCH_STICK_R_PORTRAIT_X">820</integer>
 | 
				
			||||||
    <integer name="SWITCH_STICK_R_PORTRAIT_Y">640</integer>
 | 
					    <integer name="SWITCH_STICK_R_PORTRAIT_Y">640</integer>
 | 
				
			||||||
@@ -66,4 +66,36 @@
 | 
				
			|||||||
    <integer name="SWITCH_BUTTON_DPAD_X">260</integer>
 | 
					    <integer name="SWITCH_BUTTON_DPAD_X">260</integer>
 | 
				
			||||||
    <integer name="SWITCH_BUTTON_DPAD_Y">790</integer>
 | 
					    <integer name="SWITCH_BUTTON_DPAD_Y">790</integer>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Default SWITCH foldable layout -->
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_A_FOLDABLE_X">830</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_A_FOLDABLE_Y">420</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_B_FOLDABLE_X">730</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_B_FOLDABLE_Y">470</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_X_FOLDABLE_X">730</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_X_FOLDABLE_Y">370</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_Y_FOLDABLE_X">630</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_Y_FOLDABLE_Y">420</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_STICK_L_FOLDABLE_X">170</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_STICK_L_FOLDABLE_Y">240</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_STICK_R_FOLDABLE_X">820</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_STICK_R_FOLDABLE_Y">240</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_TRIGGER_L_FOLDABLE_X">140</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_TRIGGER_L_FOLDABLE_Y">100</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_TRIGGER_R_FOLDABLE_X">860</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_TRIGGER_R_FOLDABLE_Y">100</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_TRIGGER_ZL_FOLDABLE_X">140</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_TRIGGER_ZL_FOLDABLE_Y">40</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_TRIGGER_ZR_FOLDABLE_X">860</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_TRIGGER_ZR_FOLDABLE_Y">40</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_MINUS_FOLDABLE_X">440</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_MINUS_FOLDABLE_Y">550</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_PLUS_FOLDABLE_X">560</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_PLUS_FOLDABLE_Y">550</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_HOME_FOLDABLE_X">600</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_HOME_FOLDABLE_Y">550</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_CAPTURE_FOLDABLE_X">400</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_CAPTURE_FOLDABLE_Y">550</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_DPAD_FOLDABLE_X">240</integer>
 | 
				
			||||||
 | 
					    <integer name="SWITCH_BUTTON_DPAD_FOLDABLE_Y">420</integer>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</resources>
 | 
					</resources>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user