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