make game update at 25fps, ui update at max fps (#389)

This commit is contained in:
dk 2020-06-21 21:48:51 -07:00 committed by GitHub
parent e81450b9d5
commit 95621a8262
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 7 deletions

23
main.go
View File

@ -57,9 +57,10 @@ const (
) )
var singleton struct { var singleton struct {
lastTime float64 lastTime float64
showFPS bool lastScreenAdvance float64
timeScale float64 showFPS bool
timeScale float64
captureState captureState captureState captureState
capturePath string capturePath string
@ -99,6 +100,7 @@ func main() {
func initialize() error { func initialize() error {
singleton.timeScale = 1.0 singleton.timeScale = 1.0
singleton.lastTime = d2common.Now() singleton.lastTime = d2common.Now()
singleton.lastScreenAdvance = singleton.lastTime
if err := d2config.Load(); err != nil { if err := d2config.Load(); err != nil {
return err return err
@ -210,7 +212,7 @@ func update(target d2render.Surface) error {
elapsedTime := (currentTime - singleton.lastTime) * singleton.timeScale elapsedTime := (currentTime - singleton.lastTime) * singleton.timeScale
singleton.lastTime = currentTime singleton.lastTime = currentTime
if err := advance(elapsedTime); err != nil { if err := advance(elapsedTime, currentTime); err != nil {
return err return err
} }
@ -225,9 +227,16 @@ func update(target d2render.Surface) error {
return nil return nil
} }
func advance(elapsed float64) error { const FPS_25 = 0.04 // 1/25
if err := d2screen.Advance(elapsed); err != nil {
return err func advance(elapsed, current float64) error {
elapsedLastScreenAdvance := (current - singleton.lastScreenAdvance) * singleton.timeScale
if elapsedLastScreenAdvance > FPS_25 {
singleton.lastScreenAdvance = current
if err := d2screen.Advance(elapsedLastScreenAdvance); err != nil {
return err
}
} }
d2ui.Advance(elapsed) d2ui.Advance(elapsed)