Empty-string anim queues are now allowed

This commit is contained in:
2026-02-25 02:54:54 -05:00
parent 4b81a0768a
commit 95cd378dc0
6 changed files with 34 additions and 51 deletions

View File

@@ -14,23 +14,24 @@ the `.cpp` file (not the `.hpp`), it is marked **(cpp-only)**.
- **debugcollector** → util
- **streambuffer** → eng-malloc, luastack, util
- **table** → luastack
- **pprint** → luastack, table, util
- **drivenengine** → enginewrapper, invocation, streambuffer, util
- **keywords** → luastack, util(cpp-only)
- **pprint** → luastack, table(cpp-only), util(cpp-only)
- **json** → luastack, util
- **http** → drivenengine, json(cpp-only), luastack, streambuffer
- **planemap** → luastack, util
- **invocation** → enginewrapper, streambuffer
- **drivenengine** → enginewrapper, invocation, streambuffer, util, animqueue(cpp-only)
- **luasnap** → luastack, streambuffer
- **serializelua** → luastack, streambuffer
- **sched** → luastack, streambuffer
- **idalloc** → debugcollector, luastack, streambuffer
- **invocation** → enginewrapper, streambuffer
- **source** → debugcollector, luastack, luasnap, streambuffer, table(cpp-only), traceback, util
- **animqueue** → debugcollector, luastack, streambuffer, util
- **printbuffer** → debugcollector, invocation, streambuffer, util
- **world** → animqueue, debugcollector, http, idalloc, invocation, luasnap, luastack, planemap, printbuffer, pprint, sched, serializelua, source, streambuffer, table, traceback
- **source** → debugcollector, luastack, streambuffer, util, luasnap(cpp-only), table(cpp-only), traceback(cpp-only)
- **planemap** → luastack, util
- **http** → drivenengine, keywords, luastack, streambuffer, json(cpp-only), util(cpp-only)
- **world** → animqueue, debugcollector, http, idalloc, invocation, luasnap, luastack, planemap, printbuffer, pprint(cpp-only), sched, serializelua(cpp-only), source, streambuffer, table(cpp-only), traceback(cpp-only)
- **lpxclient** → drivenengine, invocation, printbuffer, util, world
- **lpxserver** → drivenengine, luastack, printbuffer, util, world
- **eng-tests** → drivenengine, streambuffer, world
- **unit-testing** → drivenengine(cpp-only), streambuffer(cpp-only), traceback(cpp-only), world(cpp-only)
## Observations
@@ -38,20 +39,15 @@ the `.cpp` file (not the `.hpp`), it is marked **(cpp-only)**.
`http.hpp` includes `drivenengine.hpp` because it uses
`SharedChannel` (defined in drivenengine). Meanwhile, `world`
depends on both `http` and `drivenengine`, and `drivenengine`
depends on `world`. This creates a layering tangle:
depends on both `http` and `drivenengine`, but `drivenengine` no
longer depends on `world` (that circular dependency was broken).
The remaining concern is that `SharedChannel` is an I/O concept
from the driver boundary. Moving `SharedChannel` and `Channel`
into a smaller, lower-level header (perhaps `enginewrapper.hpp`
or a new `channel.hpp`) would let `http` drop its dependency on
`drivenengine` entirely.
```
world -> http -> drivenengine -> world
```
The `SharedChannel` type (`std::shared_ptr<Channel>`) is really an
I/O concept from the driver boundary. Moving `SharedChannel` and
`Channel` into a smaller, lower-level header (perhaps
`enginewrapper.hpp` or a new `channel.hpp`) would let `http` drop
its dependency on `drivenengine` entirely.
### world is a mega-consumer (16 dependencies)
### world is a mega-consumer
`world` depends on nearly every other module. This is expected for
the central game-state container, but it does make `world` hard to