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

@@ -13,4 +13,4 @@ func _init(
self.pauseEntities = entities;
func start() -> void:
getSystems().PAUSE.pause(self.pauseType, self.pauseEntities);
getSystems().PAUSE.pause(self.pauseType, self.pauseEntities);

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"
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

View File

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

View File

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

View File

@@ -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;
playerPaused = !playerPaused;