88 lines
2.0 KiB
Go
88 lines
2.0 KiB
Go
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
|
|
}
|