package main import ( "git.vezzani.net/ben/games/common/elements/v1" "git.vezzani.net/ben/games/common/elements/v1/blocks" "git.vezzani.net/ben/games/common/elements/v1/buttons" "git.vezzani.net/ben/games/common/elements/v1/mouse" "git.vezzani.net/ben/games/common/elements/v1/stacks" "git.vezzani.net/ben/games/common/sprites/v1" "github.com/hajimehoshi/ebiten/v2" "golang.org/x/image/colornames" ) var root = stacks.New( stacks.Horizontal(), //stacks.BlockOpt(blocks.BackgroundColor(color.White)), //stacks.BlockOpt(blocks.Name("parent")), stacks.Children( stacks.New( //stacks.BlockOpt(blocks.Name("left")), stacks.Children( buttons.New( buttons.BlockOpt(blocks.Size(100, 100)), buttons.Label("hello"), buttons.BlockOpt(blocks.BackgroundColor(colornames.Green)), buttons.OnClick(func(ms mouse.State) { println("green") }), ), blocks.New( blocks.Size(100, 100), blocks.BackgroundColor(colornames.Yellow), ), ), ), stacks.New( //stacks.BlockOpt(blocks.Name("right")), stacks.Children( blocks.New( blocks.Size(100, 100), blocks.BackgroundColor(colornames.Blue), ), blocks.New( blocks.Size(100, 100), blocks.BackgroundColor(colornames.Red), ), ), ), ), ) func newEditor() *editor { return &editor{} } type editor struct { root elements.Element bounds elements.Bounds handleMouse func() bool } func (e *editor) Update() error { sprites.Update() e.handleMouse() return nil } func (e *editor) Draw(screen *ebiten.Image) { e.root.Draw(screen) } func (e *editor) Layout(outsideWidth, outsideHeight int) (screenWidth, screenHeight int) { if e.bounds.Width != outsideWidth || e.bounds.Height != outsideHeight { e.bounds = elements.Bounds{ Min: elements.Point{}, Width: outsideWidth, Height: outsideHeight, } e.root = root() e.handleMouse = mouse.Handler(e.root) } return outsideWidth, outsideHeight }