Conversation

This commit is contained in:
2025-05-06 11:25:27 -05:00
parent b9f0295722
commit a3c2c65735
8 changed files with 92 additions and 16 deletions

View File

@@ -0,0 +1,9 @@
class_name EventEntityTurn extends "res://scripts/Events/Event.gd"
@export var entity:OverworldEntity = null
@export var direction:OverworldEntity.Direction = OverworldEntity.Direction.SOUTH
func start():
if entity == null:
return
entity.direction = direction

View File

@@ -0,0 +1 @@
uid://bmcrd2ugqan43

View 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 = []

View File

@@ -1,4 +1,4 @@
class_name EventGroup extends "res://scripts/Events/EventWithChildren.gd"
class_name EventGroup extends "res://scripts/Events/Flow/EventWithChildren.gd"
enum ProcessType {
SEQUENTIAL,
@@ -73,4 +73,4 @@ func startChild(child:Event) -> void:
# Inherits some properties from this event.
child.interactee = self.interactee
child.interactor = self.interactor
child.start()
child.start()

View File

@@ -0,0 +1 @@
uid://bb1qpptyr1rec

View File

@@ -8,6 +8,7 @@ func _init() -> void:
_updateChildEvents()
self.child_entered_tree.connect(onChildEntered)
self.child_exiting_tree.connect(onChildExited)
self.child_order_changed.connect(onChildOrderChanged)
func _updateChildEvents() -> void:
childEvents = []
@@ -20,3 +21,6 @@ func onChildEntered(child:Node) -> void:
func onChildExited(child:Node) -> void:
_updateChildEvents()
func onChildOrderChanged() -> void:
_updateChildEvents()

View File

@@ -0,0 +1 @@
uid://bs78jtft61ro6