Made extra events more generic.

This commit is contained in:
2025-05-06 11:41:55 -05:00
parent a3c2c65735
commit b0d9106772
5 changed files with 62 additions and 60 deletions

View File

@@ -5,7 +5,7 @@
[ext_resource type="PackedScene" uid="uid://lh713g04d3bg" path="res://scenes/Maps/TestMap/TestMapGround.tscn" id="3_gxq5o"] [ext_resource type="PackedScene" uid="uid://lh713g04d3bg" path="res://scenes/Maps/TestMap/TestMapGround.tscn" id="3_gxq5o"]
[ext_resource type="PackedScene" uid="uid://boj5o4fx41rv8" path="res://scenes/Maps/TestMap/TestMapBuilding.tscn" id="4_brp0k"] [ext_resource type="PackedScene" uid="uid://boj5o4fx41rv8" path="res://scenes/Maps/TestMap/TestMapBuilding.tscn" id="4_brp0k"]
[ext_resource type="Script" uid="uid://tkfc88q8m86f" path="res://scripts/Events/EventConversation.gd" id="5_cg1ph"] [ext_resource type="Script" uid="uid://tkfc88q8m86f" path="res://scripts/Events/EventConversation.gd" id="5_cg1ph"]
[ext_resource type="Script" path="res://scripts/Events/EventTextbox.gd" id="6_gxq5o"] [ext_resource type="Script" uid="uid://y7ckj1tn5cro" path="res://scripts/Events/EventTextbox.gd" id="6_gxq5o"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_e1h75"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_e1h75"]
sky_horizon_color = Color(0.59625, 0.6135, 0.6375, 1) sky_horizon_color = Color(0.59625, 0.6135, 0.6375, 1)
@@ -30,7 +30,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.19857, 0.684572, 0.968477)
[node name="Green" parent="." node_paths=PackedStringArray("interactEvent") instance=ExtResource("2_cg1ph")] [node name="Green" parent="." node_paths=PackedStringArray("interactEvent") instance=ExtResource("2_cg1ph")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.68747, 0.459578, -0.399262) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.68747, 0.459578, -0.399262)
interactEvent = NodePath("../Events/TestGroup") interactEvent = NodePath("../Events/TestConversation")
moveType = 1 moveType = 1
direction = 1 direction = 1
@@ -54,13 +54,9 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.92766, 2.37929, -4.38178)
[node name="Events" type="Node" parent="."] [node name="Events" type="Node" parent="."]
[node name="TestGroup" type="Node" parent="Events"] [node name="TestConversation" type="Node" parent="Events"]
script = ExtResource("5_cg1ph") script = ExtResource("5_cg1ph")
[node name="Text 0" type="Node" parent="Events/TestGroup"] [node name="Text 0" type="Node" parent="Events/TestConversation"]
script = ExtResource("6_gxq5o") script = ExtResource("6_gxq5o")
text = "Text 0" text = "I am giving you a quest to gather some ingredients."
[node name="Text 1" type="Node" parent="Events/TestGroup"]
script = ExtResource("6_gxq5o")
text = "Text 1"

View File

@@ -5,64 +5,41 @@ class_name EventConversation extends "res://scripts/Events/Flow/EventGroup.gd"
@export var entities:Array[OverworldEntity] = [] @export var entities:Array[OverworldEntity] = []
@export var includeInteractee:bool = true @export var pauseInteractee:bool = true
@export var includeInteractor:bool = true @export var pauseInteractor:bool = true
@export var turnInteractee:bool = true
var extraEvents:Array[Event] = [] @export var turnInteractor:bool = true
func start() -> void: func start() -> void:
# Turn events # Turn events
if interactee != null && interactor != null: if interactee != null && interactor != null:
if includeInteractee: if pauseInteractee && turnInteractee:
var turninteractee = EventEntityTurn.new() var turn = EventEntityTurn.new()
turninteractee.entity = interactee turn.entity = interactee
turninteractee.direction = interactee.getDirectionToFace(interactor.position) turn.direction = interactee.getDirectionToFace(interactor.position)
self.add_child(turninteractee) addExtraEvent(turn, 0)
extraEvents.append(turninteractee)
self.move_child(turninteractee, 0)
if includeInteractor: if pauseInteractor && turnInteractor:
var turninteractor = EventEntityTurn.new() var turn = EventEntityTurn.new()
turninteractor.entity = interactor turn.entity = interactor
turninteractor.direction = interactor.getDirectionToFace(interactee.position) turn.direction = interactor.getDirectionToFace(interactee.position)
self.add_child(turninteractor) addExtraEvent(turn, 0)
extraEvents.append(turninteractor)
self.move_child(turninteractor, 0)
# Create start pause event # Create start pause event
var startPause = EventPause.new() var startPause = EventPause.new()
startPause.pauseType = startPauseType startPause.pauseType = startPauseType
startPause.entities = entities startPause.entities = entities
self.add_child(startPause) startPause.includeInteractee = pauseInteractee
extraEvents.append(startPause) startPause.includeInteractor = pauseInteractor
self.move_child(startPause, 0) addExtraEvent(startPause, 0)
# Create end pause event. # Create end pause event.
var endPause = EventPause.new() var endPause = EventPause.new()
endPause.pauseType = endPauseType endPause.pauseType = endPauseType
endPause.entities = entities endPause.entities = entities
self.add_child(endPause) endPause.includeInteractee = pauseInteractee
extraEvents.append(endPause) endPause.includeInteractor = pauseInteractor
self.move_child(endPause, get_child_count() - 1) addExtraEvent(endPause, -1)
# Pass off to event group # Pass off to event group
super.start() 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,7 +1,7 @@
class_name EventTextbox extends "res://scripts/Events/Event.gd" class_name EventTextbox extends "res://scripts/Events/Event.gd"
# @export var text:Array[String] = [ "Hello Text" ]; # @export var text:Array[String] = [ "Hello Text" ];
@export var text:String = "Hello Text" @export_multiline var text:String = "Hello Text"
func start() -> void: func start() -> void:
super.start() super.start()

View File

@@ -57,17 +57,19 @@ func isDone() -> bool:
return false return false
func end() -> void: func end() -> void:
super.end()
for child in childEvents: for child in childEvents:
if child.ended || !child.started: if child.ended || !child.started:
continue continue
child.end() child.end()
# Send to the parent to end the extra events
super.end()
func reset() -> void: func reset() -> void:
super.reset()
childIndex = -1 childIndex = -1
for child in childEvents: for child in childEvents:
child.reset() child.reset()
# Send to the parent to reset the extra events
super.reset()
func startChild(child:Event) -> void: func startChild(child:Event) -> void:
# Inherits some properties from this event. # Inherits some properties from this event.

View File

@@ -1,14 +1,18 @@
class_name EventWithChildren extends "res://scripts/Events/Event.gd" class_name EventWithChildren extends "res://scripts/Events/Event.gd"
var childEvents:Array[Event] = [] var childEvents:Array[Event] = []
var extraEvents:Array[Event] = []
func _init() -> void: func _init() -> void:
super._init() super._init()
# _updateChildEvents()
# self.child_entered_tree.connect(onChildEntered)
# self.child_exiting_tree.connect(onChildExited)
# self.child_order_changed.connect(onChildOrderChanged)
func start():
super.start()
_updateChildEvents() _updateChildEvents()
_updateChildEvents()
self.child_entered_tree.connect(onChildEntered)
self.child_exiting_tree.connect(onChildExited)
self.child_order_changed.connect(onChildOrderChanged)
func _updateChildEvents() -> void: func _updateChildEvents() -> void:
childEvents = [] childEvents = []
@@ -24,3 +28,26 @@ func onChildExited(child:Node) -> void:
func onChildOrderChanged() -> void: func onChildOrderChanged() -> void:
_updateChildEvents() _updateChildEvents()
func reset() -> void:
super.reset()
_cleanupExtraEvents()
func end() -> void:
super.end()
_cleanupExtraEvents()
func _cleanupExtraEvents():
for event in extraEvents:
remove_child(event)
event.queue_free()
extraEvents = []
_updateChildEvents()
func addExtraEvent(child:Event, position:int) -> void:
assert(started == false || ended == true)
# Add the child to the extra events list
extraEvents.append(child)
add_child(child)
move_child(child, position)
_updateChildEvents()