HTTPS
https://git.nageyqma.icu/nageyqma/odin_next.git
SSH
git@git.nageyqma.icu:nageyqma/odin_next.git
HTTPS 链接可直接 git clone;推送代码请使用 SSH。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
package com.odtheking.odin.clickgui.settings
import com.odtheking.odin.features.Module
import kotlin.properties.PropertyDelegateProvider
import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KProperty
interface Setting<T> : ReadWriteProperty<Module, T>, PropertyDelegateProvider<Module, ReadWriteProperty<Module, T>> {
val name: String
var description: String
val default: T
var value: T
var hidden: Boolean
var visibilityDependency: (() -> Boolean)?
val isVisible: Boolean
get() = !hidden && visibilityDependency?.invoke() != false
fun reset() {
value = default
}
fun hide(): Setting<T> {
hidden = true
return this
}
override operator fun provideDelegate(thisRef: Module, property: KProperty<*>): ReadWriteProperty<Module, T> =
thisRef.registerSetting(this)
override operator fun getValue(thisRef: Module, property: KProperty<*>): T = value
override operator fun setValue(thisRef: Module, property: KProperty<*>, value: T) {
this.value = value
}
companion object {
fun <K : Setting<*>> K.withDependency(dependency: () -> Boolean): K {
visibilityDependency = dependency
return this
}
}
}
abstract class AbstractSetting<T>(
override val name: String,
override var description: String = ""
) : Setting<T> {
override var hidden: Boolean = false
override var visibilityDependency: (() -> Boolean)? = null
}