gai-ca2/project/scripts/global/EventsTracker.gd

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)