Implement sort?
This commit is contained in:
parent
68b29ab021
commit
7b321a549f
2 changed files with 21 additions and 0 deletions
|
@ -13,3 +13,8 @@ type TPSDisplay struct{}
|
||||||
func (TPSDisplay) Draw(screen *ebiten.Image) {
|
func (TPSDisplay) Draw(screen *ebiten.Image) {
|
||||||
ebitenutil.DebugPrint(screen, fmt.Sprintf("TPS: %0.2f", ebiten.CurrentTPS()))
|
ebitenutil.DebugPrint(screen, fmt.Sprintf("TPS: %0.2f", ebiten.CurrentTPS()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (TPSDisplay) DrawAfter(Drawer) bool {
|
||||||
|
// Always draw last
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package engine
|
package engine
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"sort"
|
||||||
|
|
||||||
"github.com/hajimehoshi/ebiten/v2"
|
"github.com/hajimehoshi/ebiten/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -12,6 +14,7 @@ type Updater interface {
|
||||||
// Drawer is a component that can draw itself (called repeatedly).
|
// Drawer is a component that can draw itself (called repeatedly).
|
||||||
type Drawer interface {
|
type Drawer interface {
|
||||||
Draw(*ebiten.Image)
|
Draw(*ebiten.Image)
|
||||||
|
DrawAfter(Drawer) bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// Game implements the ebiten methods using a collection of components.
|
// Game implements the ebiten methods using a collection of components.
|
||||||
|
@ -46,3 +49,16 @@ func (g *Game) Draw(screen *ebiten.Image) {
|
||||||
func (g *Game) Layout(outsideWidth, outsideHeight int) (w, h int) {
|
func (g *Game) Layout(outsideWidth, outsideHeight int) (w, h int) {
|
||||||
return g.ScreenWidth, g.ScreenHeight
|
return g.ScreenWidth, g.ScreenHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sort sorts the components by draw order.
|
||||||
|
// Non-Drawers are sorted first.
|
||||||
|
func (g *Game) Sort() {
|
||||||
|
sort.Slice(g.Components, func(i, j int) bool {
|
||||||
|
a, aok := g.Components[i].(Drawer)
|
||||||
|
b, bok := g.Components[j].(Drawer)
|
||||||
|
if aok && bok {
|
||||||
|
return b.DrawAfter(a)
|
||||||
|
}
|
||||||
|
return !aok && bok
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue