Skip to content

Commit 498b5af

Browse files
committed
Button action refactor
1 parent 49eb6d4 commit 498b5af

File tree

3 files changed

+20
-25
lines changed

3 files changed

+20
-25
lines changed

common/src/main/kotlin/com/lambda/gui/api/component/InteractiveComponent.kt

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,10 @@ import com.lambda.util.Mouse
77

88
abstract class InteractiveComponent : IComponent, IRectComponent {
99
protected var hovered = false
10-
protected var pressed = false; set(value) {
11-
if (field == value) return
12-
field = value
10+
protected var pressed = false
1311

14-
if (value) onPress()
15-
else onRelease()
16-
}
17-
18-
protected var activeMouseButton: Mouse.Button? = null
19-
20-
protected open fun onPress() {}
21-
protected open fun onRelease() {}
12+
protected open fun onPress(e: GuiEvent.MouseClick) {}
13+
protected open fun onRelease(e: GuiEvent.MouseClick) {}
2214

2315
override fun onEvent(e: GuiEvent) {
2416
when (e) {
@@ -32,11 +24,12 @@ abstract class InteractiveComponent : IComponent, IRectComponent {
3224
}
3325

3426
is GuiEvent.MouseClick -> {
35-
activeMouseButton = e.button.takeUnless {
36-
it.isMainButton && e.action == Mouse.Action.Click
37-
}
38-
27+
val prevPressed = pressed
3928
pressed = hovered && e.button.isMainButton && e.action == Mouse.Action.Click
29+
30+
if (prevPressed == pressed) return
31+
if (pressed) onPress(e)
32+
else onRelease(e)
4033
}
4134
}
4235
}

common/src/main/kotlin/com/lambda/gui/api/component/button/ButtonComponent.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import com.lambda.gui.api.component.WindowComponent
66
import com.lambda.gui.api.component.core.list.ChildComponent
77
import com.lambda.module.modules.client.ClickGui
88
import com.lambda.module.modules.client.GuiSettings
9-
import com.lambda.util.Mouse
109
import com.lambda.util.math.ColorUtils.multAlpha
1110
import com.lambda.util.math.MathUtils.lerp
1211
import com.lambda.util.math.Rect
@@ -91,7 +90,7 @@ abstract class ButtonComponent(
9190
}
9291
}
9392

94-
abstract fun performClickAction(mouse: Mouse.Button)
93+
abstract fun performClickAction(e: GuiEvent.MouseClick)
9594

9695
override fun onEvent(e: GuiEvent) {
9796
super.onEvent(e)
@@ -106,8 +105,8 @@ abstract class ButtonComponent(
106105
}
107106
}
108107

109-
override fun onRelease() {
110-
activeMouseButton?.let(::performClickAction)
108+
override fun onRelease(e: GuiEvent.MouseClick) {
109+
performClickAction(e)
111110
}
112111

113112
override fun onRemove() {

common/src/main/kotlin/com/lambda/gui/impl/clickgui/buttons/ModuleButton.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.lambda.gui.impl.clickgui.buttons
22

3+
import com.lambda.gui.api.GuiEvent
34
import com.lambda.gui.api.component.WindowComponent
45
import com.lambda.gui.api.component.button.ListButton
56
import com.lambda.gui.impl.clickgui.windows.SettingsWindow
@@ -9,16 +10,18 @@ import com.lambda.util.Mouse
910
class ModuleButton(val module: Module, owner: WindowComponent<*>) : ListButton(owner) {
1011
override val text get() = module.name
1112
override val active get() = module.isEnabled
13+
private val gui = owner.owner
1214

13-
override fun performClickAction(mouse: Mouse.Button) {
14-
when (mouse) {
15+
private val settingsWindow = SettingsWindow(this, gui)
16+
17+
override fun performClickAction(e: GuiEvent.MouseClick) {
18+
when (e.button) {
1519
Mouse.Button.Left -> if (hovered) module.toggle()
1620
Mouse.Button.Right -> {
17-
val gui = owner.owner
18-
1921
gui.scheduleAction {
20-
val settingsWindow = SettingsWindow(this, gui)
21-
gui.windows.addChild(settingsWindow)
22+
gui.windows.addChild(settingsWindow.apply {
23+
position = e.mouse
24+
})
2225
}
2326
}
2427
}

0 commit comments

Comments
 (0)