diff options
Diffstat (limited to 'internal/engine')
| -rw-r--r-- | internal/engine/tick.go | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/internal/engine/tick.go b/internal/engine/tick.go index 251373c..7b9666b 100644 --- a/internal/engine/tick.go +++ b/internal/engine/tick.go @@ -86,17 +86,10 @@ func (e *Engine) Stop() { } } -// processTick fires every due subscriber for the current engine tick. -// -// Subscribers are invoked in ascending subscription-ID order, i.e. the order in -// which they were registered with Subscribe. IDs are allocated monotonically -// (e.nextID++), so subscription order is a stable, deterministic sequence: -// the bootstrap master subscriber (cmd/thoi/main.go) subscribes at startup as -// ID 1 and therefore always fires first each tick, followed by each -// subsequently-registered tick (combat rounds, aggro rolls, scheduled respawns, -// etc.) in the order they registered. This guarantees predictable per-tick -// ordering across runs — critical for features whose behaviour depends on the -// relative ordering of combat resolution vs. movement vs. aggro checks. +// Tick fires every due subscriber synchronously and returns. Subscribers +// are invoked in ascending subscription-ID (registration) order. +func (e *Engine) Tick() { e.processTick() } + func (e *Engine) processTick() { e.mu.Lock() snapshot := make(map[uint64]*subscriber, len(e.subscribers)) |
