Event Dispatcher without a reference / global?

the easiest way is to use the GameState

Anyone can GetGameState()->Call/Bind Event

a bit more advanced is to create or use a Thoughts on the Gameplay Message Subsystem?