Add an FPS timer
This commit is contained in:
@@ -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:
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user