make game update at 25fps, ui update at max fps (#389)
This commit is contained in:
parent
e81450b9d5
commit
95621a8262
23
main.go
23
main.go
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue