Systems now place all of their component factories into a `Components`
member. This improves code readability and makes it clear when we are
dealing specifically with ecs components.
The concrete ComponentFactory instances now have `Add` and `Get`
methods (as opposed to `AddAlpha` or `GetAlpha`). This enforces naming
of component factories as to avoid collisions when embedded in a struct
with other components.
Also, the ComponentFactory interface is embedded directly into the
concrete component factory without a name.
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
* removed position,scale,rotation components
* added Transform component that contains position, rotation, and scale
* scene graph update now regenerates the local mat4 using the transform
component
* akara bugfix: adding new subscriptions will process existing entities
* added `--testscene` arg for testing individual scenes in isolation
* added rotation support to d2interface.Surface
* added command line arg for launching ecs impl
* removed render system tests, was causing gl context issues in tests
* fixed all lint errors in d2systems
* reduced boilerplate init code for systems with an update to akara
* fixed a race condition in the render system, added a 1-frame delay
* updated all subscriber systems (due to akara update)
* adding render system test (temporary)
* removed d2common/d2scene, was not the right way to go.
* added components for animation, scale, main viewport, viewport filter
* added interface for scenes, which are extensions of akara.System
* BootStrap is now AppBootstrap, common to game clients and headless
server
* added generic BasicScene struct for common scene functionality
* added game object factory as a system, with single sprite factory
* added update counter system, shows how many times the world updates
per second
* integration test is now the game client test