package game import ( "log" "os" "code.rocketnine.space/tslocum/etk" "code.rocketnine.space/tslocum/gohan" "code.rocketnine.space/tslocum/hot-cocoa-tycoon/entity" "code.rocketnine.space/tslocum/hot-cocoa-tycoon/system" "code.rocketnine.space/tslocum/hot-cocoa-tycoon/world" "github.com/hajimehoshi/ebiten/v2" ) type Game struct{} func NewGame() (*Game, error) { g := &Game{} // Input demo. { buffer := etk.NewText("Are you a bad enough dude to create the greatest hot cocoa stand empire?") onselected := func(text string) (handled bool) { buffer.Write([]byte("\nInput: " + text)) return true } input := etk.NewInput(">", "", onselected) inputDemo := etk.NewFlex() inputDemo.SetVertical(true) t := etk.NewText("Welcome to Hot Cocoa Tycoon") inputDemo.AddChild(t, buffer, input) etk.SetRoot(inputDemo) log.Println(inputDemo) } etk.Layout(world.ScreenWidth, world.ScreenHeight) entity.NewOnceEntity() gohan.AddSystem(&system.UISystem{}) return g, nil } func (g *Game) Layout(outsideWidth, outsideHeight int) (screenWidth, screenHeight int) { return world.ScreenWidth, world.ScreenHeight } func (g *Game) Update() error { if ebiten.IsWindowBeingClosed() { g.Exit() return nil } return gohan.Update() } func (g *Game) Draw(screen *ebiten.Image) { err := gohan.Draw(screen) if err != nil { log.Fatal(err) } } func (g *Game) Exit() { os.Exit(0) }