package scene import ( "time" "code.rocketnine.space/tslocum/gohan" "code.rocketnine.space/tslocum/gohan-bunnymark/assets" "code.rocketnine.space/tslocum/gohan-bunnymark/component" "code.rocketnine.space/tslocum/gohan-bunnymark/helper" "code.rocketnine.space/tslocum/gohan-bunnymark/system" "code.rocketnine.space/tslocum/gohan-bunnymark/world" "github.com/hajimehoshi/ebiten/v2" ) type Game struct { settings gohan.Entity } func NewGame() *Game { g := &Game{} // Add systems. gohan.AddSystem(&system.Background{}) gohan.AddSystem(&system.Velocity{}) gohan.AddSystem(&system.Gravity{}) gohan.AddSystem(&system.Bounce{}) gohan.AddSystem(system.NewRender()) gohan.AddSystem(&system.Metrics{}) gohan.AddSystem(&system.Spawn{}) gohan.AddSystem(&system.Profile{}) // Create Settings entity. g.settings = gohan.NewEntity() g.settings.AddComponent(&component.Settings{ Ticker: time.NewTicker(500 * time.Millisecond), Gpu: helper.GpuInfo(), Tps: helper.NewPlot(20, 60), Fps: helper.NewPlot(20, 60), Objects: helper.NewPlot(20, 60000), Sprite: assets.Bunny, Colorful: false, Amount: 100, }) return &Game{} } func (g *Game) Layout(outsideWidth, outsideHeight int) (screenWidth, screenHeight int) { world.ScreenWidth, world.ScreenHeight = outsideWidth, outsideHeight return world.ScreenWidth, world.ScreenHeight } func (g *Game) Update() error { return gohan.Update() } func (g *Game) Draw(screen *ebiten.Image) { err := gohan.Draw(screen) if err != nil { panic(err) } }