class_name Event extends Node const Entity = preload("res://scripts/Entity/Entity.gd"); var started:bool = false; var ended:bool = false; var interactor:EntityInteractor = null var interactee:EntityInteractable = null # Godot Methods func _init() -> void: pass func _process(delta: float) -> void: if !started || ended: return self.update(delta) if self.isDone(): self.end() # Event methods (cleaned up) func start() -> void: assert(started == false) started = true func update(_delta:float) -> void: assert(started == true) assert(ended == false) func isDone() -> bool: return true func end() -> void: assert(ended == false) ended = true func isEndingEvent() -> bool: return false func reset() -> void: started = false ended = false interactor = null interactee = null func onEntityInteract( interactor:EntityInteractor, interactee:EntityInteractable ) -> void: self.reset() self.interactor = interactor self.interactee = interactee self.start()