Files
Dawn-Godot/scripts/Events/Event.gd

53 lines
952 B
GDScript

class_name Event extends Node
const OverworldEntity = preload("res://scripts/Entities/OverworldEntity.gd");
var started:bool = false;
var ended:bool = false;
var interactor:OverworldEntity = null
var interactee:OverworldEntity = 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 reset() -> void:
started = false
ended = false
interactor = null
interactee = null
func onEntityInteract(
interactor:OverworldEntity,
interactee:OverworldEntity
) -> void:
self.reset()
self.interactor = interactor
self.interactee = interactee
self.start()