12345678910111213141516171819202122232425262728293031323334353637 |
- extends Node
- const endpoints = {}
- const subscriber = {}
- static func subscribe(event_key : String, listener : Node, callback : String)->void:
- if endpoints.has(event_key):
- for publisher in endpoints[event_key]:
- publisher["pub"].connect(publisher["sig"], listener, callback)
- print("subsribing to ", event_key)
- if not subscriber.has(event_key):
- subscriber[event_key] = []
- subscriber[event_key].append({"lis": listener, "cb": callback})
-
- static func publish(event_key : String, payload):
- if endpoints.has(event_key):
- endpoints[event_key][0]["pub"].emit_signal(endpoints[event_key][0]["sig"], payload)
- else:
- print("no publisher to emit ", event_key, " with ", payload)
-
-
- static func registerPublisher(event_key : String, publisher : Node, Signal : String)->void:
- if not endpoints.has(event_key):
- endpoints[event_key] = []
- endpoints[event_key].append({"pub": publisher, "sig": Signal})
- if subscriber.has(event_key):
- for sub in subscriber[event_key]:
- publisher.connect(Signal, sub["lis"], sub["cb"])
- print("added publisher for ", event_key, ":", endpoints[event_key])
-
- static func clear()->void:
- """
- Clears all Publishers
- """
- endpoints.clear()
- subscriber.clear()
|