mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-26 03:38:55 +01:00
Remove Canvas
This commit is contained in:
parent
ed46099c1e
commit
00552d91c2
@ -44,9 +44,9 @@ func main() {
|
||||
defer pprof.StopCPUProfile()
|
||||
}
|
||||
|
||||
u := new(glfw.UI)
|
||||
ui := new(glfw.UI)
|
||||
game := blocks.NewGame()
|
||||
if err := ebiten.Run(u, game, blocks.ScreenWidth, blocks.ScreenHeight, 2, "Blocks (Ebiten Demo)", 60); err != nil {
|
||||
if err := ebiten.Run(ui, game, blocks.ScreenWidth, blocks.ScreenHeight, 2, "Blocks (Ebiten Demo)", 60); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ type canvas struct {
|
||||
funcsDone chan struct{}
|
||||
}
|
||||
|
||||
func (c *canvas) Draw(d ebiten.GraphicsContextDrawer) (err error) {
|
||||
func (c *canvas) draw(d ebiten.GraphicsContextDrawer) (err error) {
|
||||
c.use(func() {
|
||||
c.context.PreUpdate()
|
||||
})
|
||||
@ -46,7 +46,7 @@ func (c *canvas) Draw(d ebiten.GraphicsContextDrawer) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (c *canvas) IsClosed() bool {
|
||||
func (c *canvas) isClosed() bool {
|
||||
return c.window.ShouldClose()
|
||||
}
|
||||
|
||||
|
18
glfw/ui.go
18
glfw/ui.go
@ -34,14 +34,14 @@ type UI struct {
|
||||
canvas *canvas
|
||||
}
|
||||
|
||||
func (u *UI) Start(width, height, scale int, title string) (ebiten.Canvas, error) {
|
||||
func (u *UI) Start(width, height, scale int, title string) error {
|
||||
if !glfw.Init() {
|
||||
return nil, errors.New("glfw.Init() fails")
|
||||
return errors.New("glfw.Init() fails")
|
||||
}
|
||||
glfw.WindowHint(glfw.Resizable, glfw.False)
|
||||
window, err := glfw.CreateWindow(width*scale, height*scale, title, nil, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return err
|
||||
}
|
||||
|
||||
c := &canvas{
|
||||
@ -61,11 +61,11 @@ func (u *UI) Start(width, height, scale int, title string) (ebiten.Canvas, error
|
||||
c.context, err = opengl.Initialize(width, height, realScale)
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return err
|
||||
}
|
||||
|
||||
u.canvas = c
|
||||
return c, nil
|
||||
return nil
|
||||
}
|
||||
|
||||
func (u *UI) DoEvents() {
|
||||
@ -76,3 +76,11 @@ func (u *UI) DoEvents() {
|
||||
func (u *UI) Terminate() {
|
||||
glfw.Terminate()
|
||||
}
|
||||
|
||||
func (u *UI) Draw(drawer ebiten.GraphicsContextDrawer) error {
|
||||
return u.canvas.draw(drawer)
|
||||
}
|
||||
|
||||
func (u *UI) IsClosed() bool {
|
||||
return u.canvas.isClosed()
|
||||
}
|
||||
|
11
run.go
11
run.go
@ -32,8 +32,7 @@ type Game interface {
|
||||
// calls ui.DoEvent(), game.Update() and game.Draw() at a regular interval, and finally
|
||||
// calls ui.Terminate().
|
||||
func Run(ui UI, game Game, width, height, scale int, title string, fps int) error {
|
||||
canvas, err := ui.Start(width, height, scale, title)
|
||||
if err != nil {
|
||||
if err := ui.Start(width, height, scale, title); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -45,18 +44,18 @@ func Run(ui UI, game Game, width, height, scale int, title string, fps int) erro
|
||||
defer ui.Terminate()
|
||||
for {
|
||||
ui.DoEvents()
|
||||
if ui.IsClosed() {
|
||||
return nil
|
||||
}
|
||||
select {
|
||||
default:
|
||||
if err := canvas.Draw(game); err != nil {
|
||||
if err := ui.Draw(game); err != nil {
|
||||
return err
|
||||
}
|
||||
case <-tick:
|
||||
if err := game.Update(); err != nil {
|
||||
return err
|
||||
}
|
||||
if canvas.IsClosed() {
|
||||
return nil
|
||||
}
|
||||
case <-sigterm:
|
||||
return nil
|
||||
}
|
||||
|
9
ui.go
9
ui.go
@ -17,16 +17,13 @@ limitations under the License.
|
||||
package ebiten
|
||||
|
||||
type UI interface {
|
||||
Start(widht, height, scale int, title string) (Canvas, error)
|
||||
Start(widht, height, scale int, title string) error
|
||||
DoEvents()
|
||||
Terminate()
|
||||
Draw(drawer GraphicsContextDrawer) error
|
||||
IsClosed() bool
|
||||
}
|
||||
|
||||
type GraphicsContextDrawer interface {
|
||||
Draw(d GraphicsContext) error
|
||||
}
|
||||
|
||||
type Canvas interface {
|
||||
Draw(drawer GraphicsContextDrawer) error
|
||||
IsClosed() bool
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user