Add receivers to buttons actions
This commit is contained in:
parent
290f521c82
commit
f4a16a10d2
|
@ -20,7 +20,7 @@ class ClickBox(
|
|||
private val name: TranslatableComponent? = null
|
||||
): ColoredElement(x, y, 80, 10, color, 0.5F) {
|
||||
val buttons = mutableMapOf<String, ClickButton>() // Can contain up to 16 buttons
|
||||
fun addButtons(vararg collect: Pair<String, (() -> Unit)?>, kind: Type = Type.TOGGLE): ClickBox {
|
||||
fun addButtons(vararg collect: Pair<String, (ClickButton.() -> Unit)?>, kind: Type = Type.TOGGLE): ClickBox {
|
||||
buttons.putAll(
|
||||
collect.map {
|
||||
it.first to ClickButton(title = it.first, action = it.second, getColorFrom = this, kind = kind)
|
||||
|
|
|
@ -6,8 +6,6 @@ import fr.username404.snowygui.config.Configuration
|
|||
import fr.username404.snowygui.gui.ColoredElement
|
||||
import fr.username404.snowygui.gui.FontUtil
|
||||
import fr.username404.snowygui.gui.Renderable.Rendering.defaultRectFunc
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import net.minecraft.client.gui.components.events.GuiEventListener
|
||||
|
||||
class ClickButton(
|
||||
|
@ -15,7 +13,7 @@ class ClickButton(
|
|||
width: Int = 73, height: Int = 8, getColorFrom: ColoredElement? = null,
|
||||
private val kind: Type = Type.TOGGLE,
|
||||
private val title: String = "",
|
||||
private val action: (() -> Unit)? = null,
|
||||
private val action: (ClickButton.() -> Unit)? = null,
|
||||
): ColoredElement(x, y, width, height, opacity = 0.60F), GuiEventListener {
|
||||
override var color: Int = getColorFrom?.color ?: super.color
|
||||
companion object {
|
||||
|
@ -25,20 +23,18 @@ class ClickButton(
|
|||
}
|
||||
internal var lightningFactor: Float = 0.33F
|
||||
}
|
||||
fun execAction() {
|
||||
runBlocking {
|
||||
action?.let {
|
||||
launch {
|
||||
it.invoke()
|
||||
}
|
||||
}
|
||||
private fun execAction() {
|
||||
action?.let {
|
||||
this@ClickButton.it()
|
||||
}
|
||||
}
|
||||
private var wasWithinBounds: Boolean = false
|
||||
var toggled: Boolean = false; private set(value) {
|
||||
if (value) lightUp() else if (field) lightDown()
|
||||
if ((!(!field && !value))) execAction()
|
||||
field = value
|
||||
if ((!(!field && !value))) {
|
||||
field = value
|
||||
execAction()
|
||||
} else field = value
|
||||
}
|
||||
private fun lightUp() { opacity += lightningFactor }
|
||||
private fun lightDown() { opacity -= lightningFactor }
|
||||
|
|
|
@ -25,7 +25,7 @@ object Storage {
|
|||
newBox("snowy.clickbox.misc").addButtons(
|
||||
"GammaBoost" to {
|
||||
with(Minecraft.getInstance().options) {
|
||||
gamma = if (gamma != 1400.0) {
|
||||
gamma = if (!toggled && gamma != 1400.0) {
|
||||
oldGamma = gamma
|
||||
1400.0
|
||||
} else oldGamma
|
||||
|
@ -36,10 +36,10 @@ object Storage {
|
|||
if (riskyCheats) {
|
||||
addComps(
|
||||
newBox("snowy.clickbox.risky.camera", color = redColor).addButtons(
|
||||
"NoHurtCamera" to { hurtCamera = !hurtCamera },
|
||||
"NoHurtCamera" to { hurtCamera = toggled },
|
||||
),
|
||||
newBox("snowy.clickbox.risky.movement", color = redColor).addButtons(
|
||||
"NoGravity" to { Minecraft.getInstance().player?.let { it.isNoGravity = !it.isNoGravity } },
|
||||
"NoGravity" to { Minecraft.getInstance().player?.let { it.isNoGravity = toggled } },
|
||||
),
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue