Skip to content

Event system

GameEventBus

Typed event bus – emit() and on() instead of callback chains.

Configuration: zensical.toml, optional debug: true or localStorage.setItem('DEBUG_EVENTS','1') for logging.

Event domains

Domain File Events
Job job.events.ts skillJobComplete
Selection selection.events.ts areaSelection, objectSelected, selectionCleared
Zone zone.events.ts zoneSelected
Need need.events.ts needFulfillmentRequired
View view.events.ts viewChanged (zoom/camera; selection borders refresh)

Adding events

  1. Add event to *EventMap in src/client/ui/events/<domain>.events.ts
  2. Add constant to *_EVENTS
  3. Add domain to types.ts intersection
  4. Emit from producers, subscribe in GameScreen or relevant components