mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2025-07-26 11:24:38 -04:00
go.mod, go.sum: * updating akara, bugfix in akara.EntityManager.RemoveEntity d2core * adding d2core/d2label * adding d2core/d2bitmapfont d2ui * exporting some constants for use elsewhere d2components * added bitmap font component (for ui labels) * added FileLoaded tag component to simplify asset loading filters * added locale component * FilePath component renamed to File * sprite component now contains the sprite and palette path as strings * adding ui label component d2enum * added locale as file type for file "/data/local/use" d2systems * changed most info prints to debug prints * removed unused scene graph testing file (oops!) * terminal is now rendered above mouse cursor scene * adding ui widget system for use by the game object factory * adding test scene for ui labels created with the ui widget system d2systems/AppBootstrap * added command line args for profiler * `--testscene labels` launches the label test * now adds the local file for processing * game loop init logic now inside of Init method (the call to world.Update does this) d2systems/AssetLoader * loads the locale file and adds a locale component that other systems can use * adds a FileLoaded component after finished loading a file which other systems can use (like the loading scene) d2systems/FileSourceResolver * Now looks for and uses the locale for language/charset filepath substitution d2systems/GameClientBootstrap * game loop init moved to end of AppBootstrap.Init d2systems/GameObjectFactory * embedding UI widget factory system d2systems/BaseScene * made base scene a little more clear by breaking the process into more methods d2systems/LoadingScene * simplified the entity subscriptions by using the new FileLoaded component d2systems/SceneObjectFactory * adding method for adding labels, buttons to scenes (buttons still WIP) d2systems/SceneSpriteSystem * the sprite system now maintains a cache of rendered sprites
54 lines
982 B
Go
54 lines
982 B
Go
package d2systems
|
|
|
|
import (
|
|
"github.com/gravestench/akara"
|
|
|
|
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2util"
|
|
)
|
|
|
|
const (
|
|
logPrefixUpdateCounter = "Update Counter"
|
|
)
|
|
|
|
var _ akara.System = &UpdateCounter{}
|
|
|
|
// UpdateCounter is a utility system that logs the number of updates per second
|
|
type UpdateCounter struct {
|
|
akara.BaseSystem
|
|
*d2util.Logger
|
|
secondsElapsed float64
|
|
count int
|
|
}
|
|
|
|
// Init initializes the update counter
|
|
func (u *UpdateCounter) Init(world *akara.World) {
|
|
u.World = world
|
|
|
|
u.setupLogger()
|
|
|
|
if u.World == nil {
|
|
u.SetActive(false)
|
|
}
|
|
|
|
u.Debug("initializing")
|
|
}
|
|
|
|
func (u *UpdateCounter) setupLogger() {
|
|
u.Logger = d2util.NewLogger()
|
|
u.SetPrefix(logPrefixUpdateCounter)
|
|
}
|
|
|
|
// Update the world update count in 1 second intervals
|
|
func (u *UpdateCounter) Update() {
|
|
u.count++
|
|
u.secondsElapsed += u.World.TimeDelta.Seconds()
|
|
|
|
if u.secondsElapsed < 1 {
|
|
return
|
|
}
|
|
|
|
u.Infof("%d updates per second", u.count)
|
|
u.secondsElapsed = 0
|
|
u.count = 0
|
|
}
|