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
* animation renamed to sprite
* renderable/surface renamed to texture
* added in d2math: Vector2, Vector3, Vector4, Matrix3, Matrix4, Quaternion
* worked a bit on the loading scene, main menu scene
* added `d2common/d2input`, copied input vector logic from hellspawner
* added an `InteractiveComponent` which contains input vector, enable
flag, and callback function
* Added an InputSystem which handles input logic and iterates over
entities with interactive components
* added a mouse cursor scene for rendering the mouse cursor
* made the trademark sprite disappear when left mouse is clicked
* various other small bugfixes in scene systems
* 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