aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2025-06-06 16:49:33 -0500
committerFlorian Fischer <florian.fischer@muhq.space>2025-07-03 22:01:22 -0400
commit74d101451fbd0d6678ffd26689cf378dafb4d31f (patch)
tree2a9945932aeeaf79c2b60fd830b5dfbc0119ec65
parent154cf56c5deafb8bcbdef925775c9c565d7f6362 (diff)
downloadmuhqs-game-74d101451fbd0d6678ffd26689cf378dafb4d31f.tar.gz
muhqs-game-74d101451fbd0d6678ffd26689cf378dafb4d31f.zip
add toggable card view
-rw-r--r--go/ui/cardView.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/go/ui/cardView.go b/go/ui/cardView.go
index a1c004c5..f30b811c 100644
--- a/go/ui/cardView.go
+++ b/go/ui/cardView.go
@@ -44,3 +44,57 @@ func (cv *CardView) render() *ebiten.Image {
img.DrawImage(card, op)
return img
}
+
+type ToggleCardView struct {
+ EventHandlersMap
+ cv *CardView
+ tgglBtn *SimpleButton
+ expanded bool
+}
+
+func NewToggleCardView(x, y, wdth, hght int, card string) *ToggleCardView {
+ cv := &ToggleCardView{
+ EventHandlersMap: NewEventHandlersMap(),
+ cv: NewScaledCardView(x, y, wdth, hght, card),
+ expanded: true}
+
+ cv.tgglBtn = NewSimpleButton(x, y+10, 80, 50, ">", func(b *SimpleButton) {
+ shift := float64(cv.cv.Width - 80)
+ if cv.expanded {
+ b.label = "<"
+ cv.cv.Op.GeoM.Translate(shift, 0)
+ cv.tgglBtn.X = cv.tgglBtn.X + int(shift) - 20
+ } else {
+ b.label = ">"
+ cv.cv.Op.GeoM.Reset()
+ cv.tgglBtn.X = cv.tgglBtn.X - int(shift) + 20
+ }
+ cv.tgglBtn.ForceRedraw()
+ cv.expanded = !cv.expanded
+ })
+ return cv
+}
+
+func (cv *ToggleCardView) Draw(screen *ebiten.Image) {
+ cv.cv.Draw(screen)
+ cv.tgglBtn.Draw(screen)
+}
+
+func (cv *ToggleCardView) Layout() (int, int) {
+ return cv.cv.Layout()
+}
+
+func (cv *ToggleCardView) Contains(x, y int) bool {
+ return cv.cv.Contains(x, y)
+}
+
+func (cv *ToggleCardView) FindObjectAt(x, y int) interface{} {
+ return cv.cv.FindObjectAt(x, y)
+}
+
+func (*ToggleCardView) IsClickable() bool { return true }
+func (cv *ToggleCardView) Click(x, y int) {
+ if cv.tgglBtn.Contains(x, y) {
+ cv.tgglBtn.Click(x, y)
+ }
+}