fiddle render

This commit is contained in:
Luke Meyers 2020-02-09 00:03:51 -08:00
parent 688e922d29
commit 25cafe9999
2 changed files with 34 additions and 34 deletions

View File

@ -31,7 +31,7 @@ func CommandLoop(w *pixelgl.Window, s State, stateCA chan<- State) {
case w.Pressed(pixelgl.KeyQ): case w.Pressed(pixelgl.KeyQ):
w.SetClosed(true) w.SetClosed(true)
return return
case w.JustPressed(pixelgl.KeyEnter) || w.Pressed(pixelgl.KeySpace): case w.JustPressed(pixelgl.KeyEnter) || w.Pressed(pixelgl.KeySpace) || true:
cmds := <-cmdC cmds := <-cmdC
s = UpdateState(s, sOld, cmds) s = UpdateState(s, sOld, cmds)
turn++ turn++

View File

@ -37,7 +37,7 @@ func RenderLoop(w *pixelgl.Window, s game.State, stateC <-chan game.State, sb *S
} }
} }
rs = Render(rs, sOld, s, w, *sb) rs = render(rs, sOld, s, w, *sb)
w.Update() w.Update()
frames++ frames++
@ -55,6 +55,38 @@ type renderState struct {
Frame int Frame int
} }
func render(rs renderState, sOld, sNew game.State, w *pixelgl.Window, sb SpriteBank) renderState {
bgBatch := pixel.NewBatch(new(pixel.TrianglesData), nil)
renderBackground(w, bgBatch)
oBatch := pixel.NewBatch(new(pixel.TrianglesData), sb.obstacle)
renderObstacles(sNew.Obstacles, w, oBatch, sb.obstacle)
oBatch.Draw(w)
dBatch := pixel.NewBatch(new(pixel.TrianglesData), sb.derelict)
renderObstacles(sNew.Derelicts, w, dBatch, sb.derelict)
dBatch.Draw(w)
sBatch := pixel.NewBatch(new(pixel.TrianglesData), nil)
renderSpawnPoints(sBatch, sNew.SpawnPoints, w.Bounds())
sBatch.Draw(w)
ctx := context{
sOld: sOld,
sNew: sNew,
tween: float64(rs.Frame) / float64(rs.Frames),
w: w,
}
rBatch := pixel.NewBatch(new(pixel.TrianglesData), sb.racer)
renderRacers(ctx, rBatch, sb.racer)
rBatch.Draw(w)
if rs.Frame < rs.Frames {
rs.Frame++
}
return rs
}
type context struct { type context struct {
sOld game.State sOld game.State
sNew game.State sNew game.State
@ -97,38 +129,6 @@ func loadPicture(path string) (pixel.Picture, error) {
return pixel.PictureDataFromImage(img), nil return pixel.PictureDataFromImage(img), nil
} }
func Render(rs renderState, sOld, sNew game.State, w *pixelgl.Window, sb SpriteBank) renderState {
bgBatch := pixel.NewBatch(new(pixel.TrianglesData), nil)
renderBackground(w, bgBatch)
oBatch := pixel.NewBatch(new(pixel.TrianglesData), sb.obstacle)
renderObstacles(sNew.Obstacles, w, oBatch, sb.obstacle)
oBatch.Draw(w)
dBatch := pixel.NewBatch(new(pixel.TrianglesData), sb.derelict)
renderObstacles(sNew.Derelicts, w, dBatch, sb.derelict)
dBatch.Draw(w)
sBatch := pixel.NewBatch(new(pixel.TrianglesData), nil)
renderSpawnPoints(sBatch, sNew.SpawnPoints, w.Bounds())
sBatch.Draw(w)
ctx := context{
sOld: sOld,
sNew: sNew,
tween: float64(rs.Frame) / float64(rs.Frames),
w: w,
}
rBatch := pixel.NewBatch(new(pixel.TrianglesData), sb.racer)
renderRacers(ctx, rBatch, sb.racer)
rBatch.Draw(w)
if rs.Frame < rs.Frames {
rs.Frame++
}
return rs
}
var stars []pixel.Vec var stars []pixel.Vec
func renderBackground(w *pixelgl.Window, batch *pixel.Batch) { func renderBackground(w *pixelgl.Window, batch *pixel.Batch) {