mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-27 04:08:53 +01:00
parent
ef5e917feb
commit
a718ddbf7e
@ -21,6 +21,7 @@ import (
|
|||||||
|
|
||||||
type UIContext interface {
|
type UIContext interface {
|
||||||
Update(afterFrameUpdate func()) error
|
Update(afterFrameUpdate func()) error
|
||||||
|
Draw() error
|
||||||
Layout(outsideWidth, outsideHeight float64)
|
Layout(outsideWidth, outsideHeight float64)
|
||||||
AdjustPosition(x, y float64) (float64, float64)
|
AdjustPosition(x, y float64) (float64, float64)
|
||||||
}
|
}
|
||||||
|
@ -813,6 +813,9 @@ func (u *UserInterface) update(context driver.UIContext) error {
|
|||||||
}); err != nil {
|
}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := context.Draw(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// Update the screen size when the window is resizable.
|
// Update the screen size when the window is resizable.
|
||||||
var w, h int
|
var w, h int
|
||||||
|
@ -172,6 +172,9 @@ func (u *UserInterface) update() error {
|
|||||||
}); err != nil {
|
}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := u.context.Draw(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -345,6 +345,9 @@ func (u *UserInterface) update(context driver.UIContext) error {
|
|||||||
}); err != nil {
|
}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := context.Draw(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
29
uicontext.go
29
uicontext.go
@ -242,14 +242,27 @@ func (c *uiContext) Update(afterFrameUpdate func()) error {
|
|||||||
if err := buffered.EndFrame(); err != nil {
|
if err := buffered.EndFrame(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *uiContext) Draw() error {
|
||||||
|
if err, ok := c.err.Load().(error); ok && err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := buffered.BeginFrame(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
c.draw()
|
||||||
|
if err := buffered.EndFrame(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *uiContext) update(afterFrameUpdate func()) error {
|
func (c *uiContext) update(afterFrameUpdate func()) error {
|
||||||
updateCount := clock.Update(MaxTPS())
|
updateCount := clock.Update(MaxTPS())
|
||||||
|
|
||||||
if game, ok := c.game.(interface{ Draw(*Image) }); ok {
|
if _, ok := c.game.(interface{ Draw(*Image) }); ok {
|
||||||
for i := 0; i < updateCount; i++ {
|
for i := 0; i < updateCount; i++ {
|
||||||
c.updateOffscreen()
|
c.updateOffscreen()
|
||||||
|
|
||||||
@ -269,9 +282,6 @@ func (c *uiContext) update(afterFrameUpdate func()) error {
|
|||||||
uiDriver().Input().ResetForFrame()
|
uiDriver().Input().ResetForFrame()
|
||||||
afterFrameUpdate()
|
afterFrameUpdate()
|
||||||
}
|
}
|
||||||
|
|
||||||
c.offscreen.Clear()
|
|
||||||
game.Draw(c.offscreen)
|
|
||||||
} else {
|
} else {
|
||||||
for i := 0; i < updateCount; i++ {
|
for i := 0; i < updateCount; i++ {
|
||||||
c.updateOffscreen()
|
c.updateOffscreen()
|
||||||
@ -290,10 +300,18 @@ func (c *uiContext) update(afterFrameUpdate func()) error {
|
|||||||
afterFrameUpdate()
|
afterFrameUpdate()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *uiContext) draw() {
|
||||||
// c.screen might be nil when updateCount is 0 in the initial state (#1039).
|
// c.screen might be nil when updateCount is 0 in the initial state (#1039).
|
||||||
if c.screen == nil {
|
if c.screen == nil {
|
||||||
return nil
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if game, ok := c.game.(interface{ Draw(*Image) }); ok {
|
||||||
|
c.offscreen.Clear()
|
||||||
|
game.Draw(c.offscreen)
|
||||||
}
|
}
|
||||||
|
|
||||||
// This clear is needed for fullscreen mode or some mobile platforms (#622).
|
// This clear is needed for fullscreen mode or some mobile platforms (#622).
|
||||||
@ -326,7 +344,6 @@ func (c *uiContext) update(afterFrameUpdate func()) error {
|
|||||||
op.Filter = FilterLinear
|
op.Filter = FilterLinear
|
||||||
}
|
}
|
||||||
_ = c.screen.DrawImage(c.offscreen, op)
|
_ = c.screen.DrawImage(c.offscreen, op)
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *uiContext) AdjustPosition(x, y float64) (float64, float64) {
|
func (c *uiContext) AdjustPosition(x, y float64) (float64, float64) {
|
||||||
|
Loading…
Reference in New Issue
Block a user