diff --git a/cmd/view-map/main.go b/cmd/view-map/main.go index d510778..95e6dc6 100644 --- a/cmd/view-map/main.go +++ b/cmd/view-map/main.go @@ -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: + } + }) }