Example conversation.

This commit is contained in:
2025-01-08 21:28:44 -06:00
parent bb9140169f
commit fae30b469e
7 changed files with 65 additions and 16 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -1,16 +1,24 @@
class_name TestCutscene extends "res://scripts/Cutscene/Cutscene.gd" class_name TestCutscene extends "res://scripts/Cutscene/Cutscene.gd"
const CutscenePrintEvent = preload("res://scripts/Cutscene/Event/CutscenePrintEvent.gd"); const OverworldEntity = preload("res://scripts/Entities/OverworldEntity.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 TextboxEvent = preload("res://scripts/Cutscene/Event/VisualNovel/TextboxEvent.gd"); const TextboxEvent = preload("res://scripts/Cutscene/Event/VisualNovel/TextboxEvent.gd");
const PauseEvent = preload("res://scripts/Cutscene/Event/CutscenePauseEvent.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: func setupCutscene() -> void:
var dirSpeaker = speaker.getDirectionToFace(interacted.position);
var dirInteracted = interacted.getDirectionToFace(speaker.position);
add([ add([
PauseEvent.new(PauseSystem.PauseType.ENTITY_PAUSED), OverworldChangeDirectionEvent.new(speaker, dirSpeaker),
TextboxEvent.new("Cumbria"), OverworldChangeDirectionEvent.new(interacted, dirInteracted),
PauseEvent.new(PauseSystem.PauseType.NOT_PAUSED), PauseEvent.new(PauseSystem.PauseType.ENTITY_PAUSED, [ speaker, interacted ]),
TextboxEvent.new("brother moment"),
PauseEvent.new(PauseSystem.PauseType.NOT_PAUSED)
]); ]);
pass

View File

@@ -37,6 +37,20 @@ func getDirectionVector() -> Vector3:
return Vector3(1, 0, 0); return Vector3(1, 0, 0);
return Vector3(0, 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 # Virtual Methods
func updateMovement(delta) -> void: func updateMovement(delta) -> void:
pass pass
@@ -54,12 +68,12 @@ func isPaused() -> bool:
return true; return true;
elif ps == PauseSystem.PauseType.ENTITY_PAUSED: elif ps == PauseSystem.PauseType.ENTITY_PAUSED:
if pause.entities.find(self) != -1: if pause.entities.find(self) != -1:
return false; return true;
return true return false
elif ps == PauseSystem.PauseType.CUTSCENE_PAUSED: elif ps == PauseSystem.PauseType.CUTSCENE_PAUSED:
if pause.entities.find(self) != -1: if pause.entities.find(self) != -1:
return true;
return false; return false;
return true;
return false; return false;
# Private methods # Private methods

View File

@@ -2,7 +2,7 @@ class_name TestNPCController extends "res://scripts/Entities/OverworldEntity.gd"
const TestCutscene = preload("res://scripts/Cutscene/TestCutscene.gd") const TestCutscene = preload("res://scripts/Cutscene/TestCutscene.gd")
func interact(interactor) -> void: func interact(interactor) -> void:
getSystems().CUTSCENE.setCurrentCutscene(TestCutscene.new()); getSystems().CUTSCENE.setCurrentCutscene(TestCutscene.new(interactor, self));
func updateMovement(delta) -> void: func updateMovement(delta) -> void:
pass pass

View File

@@ -1,9 +1,13 @@
class_name PauseSystem extends Node class_name PauseSystem extends Node
enum PauseType { enum PauseType {
# Completely unpaused
NOT_PAUSED, NOT_PAUSED,
# Fully paused, with no exceptions to anything
FULLY_PAUSED, FULLY_PAUSED,
# Specific entities are paused
ENTITY_PAUSED, ENTITY_PAUSED,
# All entities are paused unless specified
CUTSCENE_PAUSED CUTSCENE_PAUSED
}; };