summaryrefslogtreecommitdiff
path: root/engine/UI/Button.go
diff options
context:
space:
mode:
authorPhyscik <mynameisgennadiy@vk.com>2026-02-01 16:29:13 +0500
committerPhyscik <mynameisgennadiy@vk.com>2026-02-01 16:29:13 +0500
commitb4bb2cc1de2004153a1357e2e6678df7377b42e3 (patch)
tree47d4dd062550582aa5b6eaef9b25dba09798ace7 /engine/UI/Button.go
parent95b7170acdfa73c5842db002ec64f78125fe2f90 (diff)
UI button
Diffstat (limited to 'engine/UI/Button.go')
-rw-r--r--engine/UI/Button.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/engine/UI/Button.go b/engine/UI/Button.go
new file mode 100644
index 0000000..8d336a9
--- /dev/null
+++ b/engine/UI/Button.go
@@ -0,0 +1,49 @@
+package ui
+
+import (
+ rl "github.com/gen2brain/raylib-go/raylib"
+)
+
+type DetectionType uint8
+
+const (
+ OnClick DetectionType = iota
+ OnHold
+)
+
+type Button struct {
+ WidthWeight float32
+ DisplayElement UIElement
+ EventType DetectionType
+ ButtonType rl.MouseButton
+
+ clicked func(rl.MouseButton) bool
+}
+
+func (base *Button) Init(parent *Menu) {
+ base.DisplayElement.Init(parent)
+
+ switch base.EventType {
+ case OnClick:
+ base.clicked = rl.IsMouseButtonReleased
+ case OnHold:
+ base.clicked = rl.IsMouseButtonDown
+ }
+}
+
+func (base *Button) Destroy() {
+}
+
+func (base *Button) GetOccupationWeight() float32 {
+ return base.WidthWeight
+}
+
+func (base *Button) Draw(position *rl.Rectangle) {
+ base.DisplayElement.Draw(position)
+ if base.clicked(base.ButtonType) {
+ var mousePos = rl.GetMousePosition()
+ if rl.CheckCollisionPointRec(mousePos, *position) {
+ rl.TraceLog(rl.LogInfo, "xdx")
+ }
+ }
+}