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
	
	Block a user