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/mouse" "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.Element(blocks.BackgroundColor(color.White)), // stacks.Element(elements.Name("parent")), // stacks.Element(elements.Children( // stacks.New( // stacks.Element(elements.Name("left")), // stacks.Element(elements.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.Element(elements.Name("right")), // stacks.Element(elements.Children( // blocks.New( // blocks.Size(100, 100), // blocks.BackgroundColor(colornames.Blue), // ), // blocks.New( // blocks.Size(100, 100), // blocks.BackgroundColor(colornames.Red), // ), // )), // ), // )), //) var root = blocks.New(). Size(100, 100). BackgroundColor(colornames.Red) func newEditor() *editor { return &editor{} } type editor struct { bounds elements.Bounds handleMouse func() bool root elements.Element } 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 }