package main import ( "image/color" "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/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.Size(200, 200)), stacks.BlockOpt(blocks.Name("parent")), stacks.Children( stacks.New( stacks.BlockOpt(blocks.Name("left")), stacks.Children( blocks.New(blocks.BackgroundColor(colornames.Green)), blocks.New(blocks.BackgroundColor(colornames.Yellow)), )), stacks.New( stacks.BlockOpt(blocks.Name("right")), stacks.Children( blocks.New(blocks.BackgroundColor(colornames.Blue)), blocks.New(blocks.BackgroundColor(colornames.Red)), ), ), ), ) func newEditor() *editor { return &editor{} } type editor struct { root elements.Element bounds elements.Bounds } //var handleClick = mouse.ClickHandler(root) func (e *editor) Update() error { sprites.Update() //handleClick() 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 != float64(outsideWidth) || e.bounds.Height != float64(outsideHeight) { e.bounds = elements.Bounds{ Min: elements.Point{}, Width: float64(outsideWidth), Height: float64(outsideHeight), } e.root = root(e.bounds) } return outsideWidth, outsideHeight }