diff --git a/game/commands.go b/game/commands.go index 81eb390..36fcb21 100644 --- a/game/commands.go +++ b/game/commands.go @@ -31,7 +31,7 @@ func CommandLoop(w *pixelgl.Window, s State, stateCA chan<- State) { case w.Pressed(pixelgl.KeyQ): w.SetClosed(true) return - case w.JustPressed(pixelgl.KeyEnter) || w.Pressed(pixelgl.KeySpace): + case w.JustPressed(pixelgl.KeyEnter) || w.Pressed(pixelgl.KeySpace) || true: cmds := <-cmdC s = UpdateState(s, sOld, cmds) turn++ diff --git a/gfx/gfx.go b/gfx/gfx.go index a6bad2a..64330ad 100644 --- a/gfx/gfx.go +++ b/gfx/gfx.go @@ -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() frames++ @@ -55,6 +55,38 @@ type renderState struct { 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 { sOld game.State sNew game.State @@ -97,38 +129,6 @@ func loadPicture(path string) (pixel.Picture, error) { 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 func renderBackground(w *pixelgl.Window, batch *pixel.Batch) {