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)