55 lines
985 B
GDScript
55 lines
985 B
GDScript
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()
|