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"
"os"
"path/filepath"
"time"
"github.com/faiface/pixel"
"github.com/faiface/pixel/pixelgl"
@@ -35,7 +36,8 @@ type env struct {
type state struct {
env *env
step int
step int
fpsTicker <-chan time.Time
cam pixel.Matrix
camPos pixel.Vec
@@ -78,14 +80,19 @@ func main() {
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
pixelgl.Run(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 {
log.Fatal("Couldn't create window: %v", err)
}
@@ -95,8 +102,10 @@ func (e *env) run() {
env: e,
// camPos: pixel.V(0, float64(-pWin.Bounds().Size().Y)),
// camPos: pixel.V(float64(3700), float64(0)),
zoom: 1.0,
rot: 0.785,
zoom: 1.0,
rot: 0.785,
step: -1,
fpsTicker: time.Tick(time.Second),
}
pWin.SetSmooth(true)
@@ -104,12 +113,19 @@ func (e *env) run() {
oldState := *state
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)
state.present(pWin)
}
state.step += 1
select {
case <-state.fpsTicker:
pWin.SetTitle(fmt.Sprintf("%s | FPS: %d", title, state.step))
state.step = 0
default:
}
})
}