class_name EventConversation extends "res://scripts/Event/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[Entity] = [] @export var pauseInteractee:bool = true @export var pauseInteractor:bool = true @export var turnInteractee:bool = true @export var turnInteractor:bool = true var endPauseEvent:EventPause = null func start() -> void: # Turn events if interactee && interactor: if turnInteractee && interactee.entityDirection && interactor.characterBody: var turn = EventEntityTurn.new() turn.name = "Conversation Turn Interactee" turn.entity = interactee.entityDirection turn.direction = turn.entity.getDirectionToFace(interactor.characterBody.global_position) addChildEvent(turn, 0) if turnInteractor && interactor.entityDirection && interactee.characterBody: var turn = EventEntityTurn.new() turn.name = "Conversation Turn Interactor" turn.entity = interactor.entityDirection turn.direction = turn.entity.getDirectionToFace(interactee.characterBody.global_position) addChildEvent(turn, 0) # Create start pause event if (pauseInteractee && interactee.entity) || (pauseInteractor && interactor.entity): var startPause = EventPause.new() startPause.name = "Conversation Start Pause" startPause.pauseType = startPauseType startPause.entities = entities if pauseInteractee && interactee.entity: startPause.includeInteractee = pauseInteractee if pauseInteractor && interactor.entity: startPause.includeInteractor = pauseInteractor addChildEvent(startPause, 0) # Create end pause event. endPauseEvent = EventPause.new() endPauseEvent.name = "Conversation End Pause" endPauseEvent.pauseType = endPauseType endPauseEvent.entities = entities if pauseInteractee && interactee.entity: endPauseEvent.includeInteractee = pauseInteractee if pauseInteractor && interactor.entity: endPauseEvent.includeInteractor = pauseInteractor addChildEvent(endPauseEvent, -1) # Pass off to event group super.start() func end() -> void: print("Ending conversation event: ", self) # Manually end pause if endPauseEvent != null && !endPauseEvent.started: endPauseEvent.start() super.end()