summaryrefslogtreecommitdiff
path: root/loop/loop.go
blob: 65db525babd8916ccb2b6153b85546008708191b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package loop

import (
	"github.com/Zyko0/go-sdl3/sdl"
	"ponger/ecs"
	"ponger/events"
	"ponger/render"
	"ponger/tree"
)

func New(game ecs.IsGameObject, window *sdl.Window, renderer *sdl.Renderer) func() error {
	now := sdl.Ticks()
	return func() error {
		next := sdl.Ticks()
		delta := next - now
		err := tree.Process(game, events.Delta(delta), renderer)
		if err != nil {
			return err
		}
		render.Render(game, renderer)
		err = renderer.Present()
		if err != nil {
			return err
		}
		now = next
		return nil
	}
}