Add an FPS timer

This commit is contained in:
2018-03-28 01:15:35 +01:00
parent eddd63350d
commit 9d56dff54e

View File

@@ -7,6 +7,7 @@ import (
"math" "math"
"os" "os"
"path/filepath" "path/filepath"
"time"
"github.com/faiface/pixel" "github.com/faiface/pixel"
"github.com/faiface/pixel/pixelgl" "github.com/faiface/pixel/pixelgl"
@@ -35,7 +36,8 @@ type env struct {
type state struct { type state struct {
env *env env *env
step int step int
fpsTicker <-chan time.Time
cam pixel.Matrix cam pixel.Matrix
camPos pixel.Vec camPos pixel.Vec
@@ -78,14 +80,19 @@ func main() {
objects[name] = conv.ConvertObject(obj, name) objects[name] = conv.ConvertObject(obj, name)
} }
env := &env{gameMap: gameMap, set: mapSet, objects: objects} env := &env{
gameMap: gameMap,
set: mapSet,
objects: objects,
}
// The main thread now belongs to pixelgl // The main thread now belongs to pixelgl
pixelgl.Run(env.run) pixelgl.Run(env.run)
} }
func (e *env) run() { func (e *env) run() {
win, err := ui.NewWindow("View Map " + *mapFile) title := "View Map " + *mapFile
win, err := ui.NewWindow(title + " | FPS: ?")
if err != nil { if err != nil {
log.Fatal("Couldn't create window: %v", err) log.Fatal("Couldn't create window: %v", err)
} }
@@ -95,8 +102,10 @@ func (e *env) run() {
env: e, env: e,
// camPos: pixel.V(0, float64(-pWin.Bounds().Size().Y)), // camPos: pixel.V(0, float64(-pWin.Bounds().Size().Y)),
// camPos: pixel.V(float64(3700), float64(0)), // camPos: pixel.V(float64(3700), float64(0)),
zoom: 1.0, zoom: 1.0,
rot: 0.785, rot: 0.785,
step: -1,
fpsTicker: time.Tick(time.Second),
} }
pWin.SetSmooth(true) pWin.SetSmooth(true)
@@ -104,12 +113,19 @@ func (e *env) run() {
oldState := *state oldState := *state
state = state.runStep(pWin) state = state.runStep(pWin)
if oldState != *state || oldState.step == 0 { if oldState != *state || oldState.step == -1 {
log.Printf("zoom=%.2f rot=%.4f zIdx=%v camPos=%#v", state.zoom, state.rot, state.zIdx, state.camPos) log.Printf("zoom=%.2f rot=%.4f zIdx=%v camPos=%#v", state.zoom, state.rot, state.zIdx, state.camPos)
state.present(pWin) state.present(pWin)
} }
state.step += 1 state.step += 1
select {
case <-state.fpsTicker:
pWin.SetTitle(fmt.Sprintf("%s | FPS: %d", title, state.step))
state.step = 0
default:
}
}) })
} }