Refactoring: Remove updater

This commit is contained in:
Hajime Hoshi 2018-01-06 23:30:11 +09:00
parent 364823e70c
commit 61646e5d03
2 changed files with 11 additions and 28 deletions

View File

@ -17,6 +17,8 @@ package ebiten
import ( import (
"math" "math"
"github.com/hajimehoshi/ebiten/internal/audiobinding"
"github.com/hajimehoshi/ebiten/internal/clock"
"github.com/hajimehoshi/ebiten/internal/restorable" "github.com/hajimehoshi/ebiten/internal/restorable"
"github.com/hajimehoshi/ebiten/internal/ui" "github.com/hajimehoshi/ebiten/internal/ui"
"github.com/hajimehoshi/ebiten/internal/web" "github.com/hajimehoshi/ebiten/internal/web"
@ -95,7 +97,14 @@ func drawWithFittingScale(dst *Image, src *Image) {
_ = dst.DrawImage(src, op) _ = dst.DrawImage(src, op)
} }
func (c *graphicsContext) Update(updateCount int, afterFrameUpdate func()) error { func (c *graphicsContext) Update(afterFrameUpdate func()) error {
select {
case err := <-audiobinding.Error():
return err
default:
}
updateCount := clock.Update()
if err := c.initializeIfNeeded(); err != nil { if err := c.initializeIfNeeded(); err != nil {
return err return err
} }

28
run.go
View File

@ -18,7 +18,6 @@ import (
"image" "image"
"sync/atomic" "sync/atomic"
"github.com/hajimehoshi/ebiten/internal/audiobinding"
"github.com/hajimehoshi/ebiten/internal/clock" "github.com/hajimehoshi/ebiten/internal/clock"
"github.com/hajimehoshi/ebiten/internal/devicescale" "github.com/hajimehoshi/ebiten/internal/devicescale"
"github.com/hajimehoshi/ebiten/internal/ui" "github.com/hajimehoshi/ebiten/internal/ui"
@ -63,7 +62,7 @@ func IsRunningSlowly() bool {
var theGraphicsContext atomic.Value var theGraphicsContext atomic.Value
func run(width, height int, scale float64, title string, g *graphicsContext) error { func run(width, height int, scale float64, title string, g *graphicsContext) error {
if err := ui.Run(width, height, scale, title, &updater{g}); err != nil { if err := ui.Run(width, height, scale, title, g); err != nil {
if _, ok := err.(*ui.RegularTermination); ok { if _, ok := err.(*ui.RegularTermination); ok {
return nil return nil
} }
@ -72,31 +71,6 @@ func run(width, height int, scale float64, title string, g *graphicsContext) err
return nil return nil
} }
type updater struct {
g *graphicsContext
}
func (u *updater) SetSize(width, height int, scale float64) {
u.g.SetSize(width, height, scale)
}
func (u *updater) Update(afterFrameUpdate func()) error {
select {
case err := <-audiobinding.Error():
return err
default:
}
n := clock.Update()
if err := u.g.Update(n, afterFrameUpdate); err != nil {
return err
}
return nil
}
func (u *updater) Invalidate() {
u.g.Invalidate()
}
// Run runs the game. // Run runs the game.
// f is a function which is called at every frame. // f is a function which is called at every frame.
// The argument (*Image) is the render target that represents the screen. // The argument (*Image) is the render target that represents the screen.