From fae30b469e459ed7a9605ada82958b49dc770fc0 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Wed, 8 Jan 2025 21:28:44 -0600 Subject: [PATCH] Example conversation. --- scripts/Cutscene/Event/CutscenePauseEvent.gd | 2 +- .../Entity/OverworldChangeDirectionEvent.gd | 13 ++++++++++ .../Event/Entity/OverworldEntityEvent.gd | 10 +++++++ scripts/Cutscene/TestCutscene.gd | 26 ++++++++++++------- scripts/Entities/OverworldEntity.gd | 22 +++++++++++++--- scripts/Entities/TestNPCController.gd | 2 +- scripts/System/PauseSystem.gd | 6 ++++- 7 files changed, 65 insertions(+), 16 deletions(-) create mode 100644 scripts/Cutscene/Event/Entity/OverworldChangeDirectionEvent.gd create mode 100644 scripts/Cutscene/Event/Entity/OverworldEntityEvent.gd diff --git a/scripts/Cutscene/Event/CutscenePauseEvent.gd b/scripts/Cutscene/Event/CutscenePauseEvent.gd index 2a3d376..becee50 100644 --- a/scripts/Cutscene/Event/CutscenePauseEvent.gd +++ b/scripts/Cutscene/Event/CutscenePauseEvent.gd @@ -13,4 +13,4 @@ func _init( self.pauseEntities = entities; func start() -> void: - getSystems().PAUSE.pause(self.pauseType, self.pauseEntities); \ No newline at end of file + getSystems().PAUSE.pause(self.pauseType, self.pauseEntities); diff --git a/scripts/Cutscene/Event/Entity/OverworldChangeDirectionEvent.gd b/scripts/Cutscene/Event/Entity/OverworldChangeDirectionEvent.gd new file mode 100644 index 0000000..5cf4c2a --- /dev/null +++ b/scripts/Cutscene/Event/Entity/OverworldChangeDirectionEvent.gd @@ -0,0 +1,13 @@ +class_name OverworldChangeDirectionEvent extends "res://scripts/Cutscene/Event/Entity/OverworldEntityEvent.gd" + +var direction:OverworldEntity.Direction; + +func _init( + entity:OverworldEntity, + direction:OverworldEntity.Direction, +) -> void: + super._init(entity); + self.direction = direction; + +func start() -> void: + entity.direction = direction; \ No newline at end of file diff --git a/scripts/Cutscene/Event/Entity/OverworldEntityEvent.gd b/scripts/Cutscene/Event/Entity/OverworldEntityEvent.gd new file mode 100644 index 0000000..d271685 --- /dev/null +++ b/scripts/Cutscene/Event/Entity/OverworldEntityEvent.gd @@ -0,0 +1,10 @@ +class_name OverworldEntityEvent extends "res://scripts/Cutscene/CutsceneEvent.gd" +const OverworldEntity = preload("res://scripts/Entities/OverworldEntity.gd"); + +var entity:OverworldEntity; + +func _init( + entity:OverworldEntity, +) -> void: + super._init(); + self.entity = entity; \ No newline at end of file diff --git a/scripts/Cutscene/TestCutscene.gd b/scripts/Cutscene/TestCutscene.gd index 5c1b792..566ed3f 100644 --- a/scripts/Cutscene/TestCutscene.gd +++ b/scripts/Cutscene/TestCutscene.gd @@ -1,16 +1,24 @@ class_name TestCutscene extends "res://scripts/Cutscene/Cutscene.gd" -const CutscenePrintEvent = preload("res://scripts/Cutscene/Event/CutscenePrintEvent.gd"); -const CutsceneWaitEvent = preload("res://scripts/Cutscene/Event/CutsceneWaitEvent.gd"); -const CutsceneConcurrentEvent = preload("res://scripts/Cutscene/Event/CutsceneConcurrentEvent.gd"); -const CutsceneIfEvent = preload("res://scripts/Cutscene/Event/CutsceneIfEvent.gd"); -const CutsceneWhileEvent = preload("res://scripts/Cutscene/Event/CutsceneWhileEvent.gd"); +const OverworldEntity = preload("res://scripts/Entities/OverworldEntity.gd"); const TextboxEvent = preload("res://scripts/Cutscene/Event/VisualNovel/TextboxEvent.gd"); const PauseEvent = preload("res://scripts/Cutscene/Event/CutscenePauseEvent.gd"); +const OverworldChangeDirectionEvent = preload("res://scripts/Cutscene/Event/Entity/OverworldChangeDirectionEvent.gd"); + +var speaker:OverworldEntity; +var interacted:OverworldEntity; + +func _init(speaker:OverworldEntity, interacted:OverworldEntity ) -> void: + self.speaker = speaker; + self.interacted = interacted; func setupCutscene() -> void: + var dirSpeaker = speaker.getDirectionToFace(interacted.position); + var dirInteracted = interacted.getDirectionToFace(speaker.position); + add([ - PauseEvent.new(PauseSystem.PauseType.ENTITY_PAUSED), - TextboxEvent.new("Cumbria"), - PauseEvent.new(PauseSystem.PauseType.NOT_PAUSED), + OverworldChangeDirectionEvent.new(speaker, dirSpeaker), + OverworldChangeDirectionEvent.new(interacted, dirInteracted), + PauseEvent.new(PauseSystem.PauseType.ENTITY_PAUSED, [ speaker, interacted ]), + TextboxEvent.new("brother moment"), + PauseEvent.new(PauseSystem.PauseType.NOT_PAUSED) ]); - pass diff --git a/scripts/Entities/OverworldEntity.gd b/scripts/Entities/OverworldEntity.gd index d5372aa..ee42df8 100644 --- a/scripts/Entities/OverworldEntity.gd +++ b/scripts/Entities/OverworldEntity.gd @@ -36,6 +36,20 @@ func getDirectionVector() -> Vector3: Direction.EAST: return Vector3(1, 0, 0); return Vector3(0, 0, 0); + +func getDirectionToFace(position:Vector3) -> Direction: + var diff = position - self.position; + if abs(diff.x) > abs(diff.z): + if diff.x > 0: + return Direction.EAST; + else: + return Direction.WEST; + else: + if diff.z > 0: + return Direction.SOUTH; + else: + return Direction.NORTH; + return Direction.SOUTH; # Virtual Methods func updateMovement(delta) -> void: @@ -54,12 +68,12 @@ func isPaused() -> bool: return true; elif ps == PauseSystem.PauseType.ENTITY_PAUSED: if pause.entities.find(self) != -1: - return false; - return true + return true; + return false elif ps == PauseSystem.PauseType.CUTSCENE_PAUSED: if pause.entities.find(self) != -1: - return true; - return false; + return false; + return true; return false; # Private methods diff --git a/scripts/Entities/TestNPCController.gd b/scripts/Entities/TestNPCController.gd index 537dd6f..edaa5cc 100644 --- a/scripts/Entities/TestNPCController.gd +++ b/scripts/Entities/TestNPCController.gd @@ -2,7 +2,7 @@ class_name TestNPCController extends "res://scripts/Entities/OverworldEntity.gd" const TestCutscene = preload("res://scripts/Cutscene/TestCutscene.gd") func interact(interactor) -> void: - getSystems().CUTSCENE.setCurrentCutscene(TestCutscene.new()); + getSystems().CUTSCENE.setCurrentCutscene(TestCutscene.new(interactor, self)); func updateMovement(delta) -> void: pass diff --git a/scripts/System/PauseSystem.gd b/scripts/System/PauseSystem.gd index 0540b95..5256978 100644 --- a/scripts/System/PauseSystem.gd +++ b/scripts/System/PauseSystem.gd @@ -1,9 +1,13 @@ class_name PauseSystem extends Node enum PauseType { + # Completely unpaused NOT_PAUSED, + # Fully paused, with no exceptions to anything FULLY_PAUSED, + # Specific entities are paused ENTITY_PAUSED, + # All entities are paused unless specified CUTSCENE_PAUSED }; @@ -30,4 +34,4 @@ func isPlayerPaused() -> bool: return playerPaused; func playerPauseToggle() -> void: - playerPaused = !playerPaused; \ No newline at end of file + playerPaused = !playerPaused;