aboutsummaryrefslogtreecommitdiff
path: root/internal/engine
diff options
context:
space:
mode:
Diffstat (limited to 'internal/engine')
-rw-r--r--internal/engine/tick.go15
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))