skyline/app/src/main/java/emu/skyline/input/onscreen/OnScreenConfiguration.kt

47 lines
1.8 KiB
Kotlin

/*
* SPDX-License-Identifier: MPL-2.0
* Copyright © 2020 Skyline Team and Contributors (https://github.com/skyline-emu/)
*/
package emu.skyline.input.onscreen
import android.content.Context
import android.graphics.Color
import emu.skyline.input.ButtonId
import emu.skyline.utils.sharedPreferences
interface ControllerConfiguration {
var alpha : Int
var textColor : Int
var backgroundColor : Int
var enabled : Boolean
var globalScale : Float
var relativeX : Float
var relativeY : Float
}
/**
* Dummy implementation so layout editor is able to render [OnScreenControllerView] when [android.view.View.isInEditMode] is true
*/
class ControllerConfigurationDummy(defaultRelativeX : Float, defaultRelativeY : Float) : ControllerConfiguration {
override var alpha : Int = 255
override var textColor = Color.argb(180, 0, 0, 0)
override var backgroundColor = Color.argb(180, 255, 255, 255)
override var enabled = true
override var globalScale = 1f
override var relativeX = defaultRelativeX
override var relativeY = defaultRelativeY
}
class ControllerConfigurationImpl(private val context : Context, private val buttonId : ButtonId, defaultRelativeX : Float, defaultRelativeY : Float) : ControllerConfiguration {
private inline fun <reified T> config(default : T, prefix : String = "${buttonId.name}_") = sharedPreferences(context, default, prefix, "controller_config")
override var alpha by config(255, "")
override var textColor by config(Color.argb(180, 0, 0, 0))
override var backgroundColor by config(Color.argb(180, 255, 255, 255))
override var enabled by config(true)
override var globalScale by config(1.15f, "")
override var relativeX by config(defaultRelativeX)
override var relativeY by config(defaultRelativeY)
}