Conversation
This commit is contained in:
68
scripts/Events/EventConversation.gd
Normal file
68
scripts/Events/EventConversation.gd
Normal file
@@ -0,0 +1,68 @@
|
||||
class_name EventConversation extends "res://scripts/Events/Flow/EventGroup.gd"
|
||||
|
||||
@export var startPauseType:PauseSystem.PauseType = PauseSystem.PauseType.ENTITY_PAUSED
|
||||
@export var endPauseType:PauseSystem.PauseType = PauseSystem.PauseType.NOT_PAUSED
|
||||
|
||||
@export var entities:Array[OverworldEntity] = []
|
||||
|
||||
@export var includeInteractee:bool = true
|
||||
@export var includeInteractor:bool = true
|
||||
|
||||
var extraEvents:Array[Event] = []
|
||||
|
||||
func start() -> void:
|
||||
|
||||
# Turn events
|
||||
if interactee != null && interactor != null:
|
||||
if includeInteractee:
|
||||
var turninteractee = EventEntityTurn.new()
|
||||
turninteractee.entity = interactee
|
||||
turninteractee.direction = interactee.getDirectionToFace(interactor.position)
|
||||
self.add_child(turninteractee)
|
||||
extraEvents.append(turninteractee)
|
||||
self.move_child(turninteractee, 0)
|
||||
|
||||
if includeInteractor:
|
||||
var turninteractor = EventEntityTurn.new()
|
||||
turninteractor.entity = interactor
|
||||
turninteractor.direction = interactor.getDirectionToFace(interactee.position)
|
||||
self.add_child(turninteractor)
|
||||
extraEvents.append(turninteractor)
|
||||
self.move_child(turninteractor, 0)
|
||||
|
||||
# Create start pause event
|
||||
var startPause = EventPause.new()
|
||||
startPause.pauseType = startPauseType
|
||||
startPause.entities = entities
|
||||
self.add_child(startPause)
|
||||
extraEvents.append(startPause)
|
||||
self.move_child(startPause, 0)
|
||||
|
||||
# Create end pause event.
|
||||
var endPause = EventPause.new()
|
||||
endPause.pauseType = endPauseType
|
||||
endPause.entities = entities
|
||||
self.add_child(endPause)
|
||||
extraEvents.append(endPause)
|
||||
self.move_child(endPause, get_child_count() - 1)
|
||||
|
||||
# Pass off to event group
|
||||
super.start()
|
||||
|
||||
func reset() -> void:
|
||||
# Let event group reset normally
|
||||
super.reset()
|
||||
|
||||
# Remove the events we created.
|
||||
cleanupExtraEvents()
|
||||
|
||||
func end() -> void:
|
||||
# Let event group end normally
|
||||
super.end()
|
||||
# Remove the events we created.
|
||||
cleanupExtraEvents()
|
||||
|
||||
func cleanupExtraEvents():
|
||||
for event in extraEvents:
|
||||
event.queue_free()
|
||||
extraEvents = []
|
Reference in New Issue
Block a user