mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-06-19 21:55:24 +00:00
make game update at 25fps, ui update at max fps (#389)
This commit is contained in:
parent
e81450b9d5
commit
95621a8262
15
main.go
15
main.go
|
@ -58,6 +58,7 @@ const (
|
||||||
|
|
||||||
var singleton struct {
|
var singleton struct {
|
||||||
lastTime float64
|
lastTime float64
|
||||||
|
lastScreenAdvance float64
|
||||||
showFPS bool
|
showFPS bool
|
||||||
timeScale float64
|
timeScale float64
|
||||||
|
|
||||||
|
@ -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,10 +227,17 @@ 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 {
|
|
||||||
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
d2ui.Advance(elapsed)
|
d2ui.Advance(elapsed)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user