30 lines
777 B
GDScript
30 lines
777 B
GDScript
class_name EventsTracker
|
|
extends Node
|
|
|
|
enum Event {
|
|
CAMPFIRE_LIT,
|
|
CAMPFIRE_LIT_FAILED,
|
|
CAMPFIRE_EXTINGUISHED,
|
|
CAMP_ADDED_ITEM,
|
|
CAMP_TAKEN_ITEM,
|
|
CAMP_TAKE_ITEM_FAILED,
|
|
SLEEP,
|
|
PLAYER_PICKED_UP_ITEM,
|
|
PLAYER_DROPPED_ITEM,
|
|
};
|
|
#
|
|
static var events: Array[TrackedEvent] = []
|
|
static var max_events: int = 20
|
|
static var callbacks: Array[Callable] = []
|
|
|
|
static func track(event: Event, params: Dictionary = {}) -> void:
|
|
var tracked_event: TrackedEvent = TrackedEvent.new()
|
|
tracked_event.event = event
|
|
tracked_event.params = params
|
|
events.append(tracked_event)
|
|
print("Event tracked: ", event, " params: ", params)
|
|
if events.size() > max_events:
|
|
events.remove_at(0)
|
|
for cb in callbacks:
|
|
cb.call(event, params)
|