Made extra events more generic.
This commit is contained in:
@@ -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://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" 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"]
|
||||
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")]
|
||||
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
|
||||
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="TestGroup" type="Node" parent="Events"]
|
||||
[node name="TestConversation" type="Node" parent="Events"]
|
||||
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")
|
||||
text = "Text 0"
|
||||
|
||||
[node name="Text 1" type="Node" parent="Events/TestGroup"]
|
||||
script = ExtResource("6_gxq5o")
|
||||
text = "Text 1"
|
||||
text = "I am giving you a quest to gather some ingredients."
|
||||
|
@@ -5,64 +5,41 @@ class_name EventConversation extends "res://scripts/Events/Flow/EventGroup.gd"
|
||||
|
||||
@export var entities:Array[OverworldEntity] = []
|
||||
|
||||
@export var includeInteractee:bool = true
|
||||
@export var includeInteractor:bool = true
|
||||
|
||||
var extraEvents:Array[Event] = []
|
||||
@export var pauseInteractee:bool = true
|
||||
@export var pauseInteractor:bool = true
|
||||
@export var turnInteractee:bool = true
|
||||
@export var turnInteractor:bool = true
|
||||
|
||||
func start() -> void:
|
||||
|
||||
# Turn events
|
||||
if interactee != null && interactor != null:
|
||||
if includeInteractee:
|
||||
var turninteractee = EventEntityTurn.new()
|
||||
turninteractee.entity = interactee
|
||||
turninteractee.direction = interactee.getDirectionToFace(interactor.position)
|
||||
self.add_child(turninteractee)
|
||||
extraEvents.append(turninteractee)
|
||||
self.move_child(turninteractee, 0)
|
||||
if pauseInteractee && turnInteractee:
|
||||
var turn = EventEntityTurn.new()
|
||||
turn.entity = interactee
|
||||
turn.direction = interactee.getDirectionToFace(interactor.position)
|
||||
addExtraEvent(turn, 0)
|
||||
|
||||
if includeInteractor:
|
||||
var turninteractor = EventEntityTurn.new()
|
||||
turninteractor.entity = interactor
|
||||
turninteractor.direction = interactor.getDirectionToFace(interactee.position)
|
||||
self.add_child(turninteractor)
|
||||
extraEvents.append(turninteractor)
|
||||
self.move_child(turninteractor, 0)
|
||||
if pauseInteractor && turnInteractor:
|
||||
var turn = EventEntityTurn.new()
|
||||
turn.entity = interactor
|
||||
turn.direction = interactor.getDirectionToFace(interactee.position)
|
||||
addExtraEvent(turn, 0)
|
||||
|
||||
# Create start pause event
|
||||
var startPause = EventPause.new()
|
||||
startPause.pauseType = startPauseType
|
||||
startPause.entities = entities
|
||||
self.add_child(startPause)
|
||||
extraEvents.append(startPause)
|
||||
self.move_child(startPause, 0)
|
||||
startPause.includeInteractee = pauseInteractee
|
||||
startPause.includeInteractor = pauseInteractor
|
||||
addExtraEvent(startPause, 0)
|
||||
|
||||
# Create end pause event.
|
||||
var endPause = EventPause.new()
|
||||
endPause.pauseType = endPauseType
|
||||
endPause.entities = entities
|
||||
self.add_child(endPause)
|
||||
extraEvents.append(endPause)
|
||||
self.move_child(endPause, get_child_count() - 1)
|
||||
endPause.includeInteractee = pauseInteractee
|
||||
endPause.includeInteractor = pauseInteractor
|
||||
addExtraEvent(endPause, -1)
|
||||
|
||||
# Pass off to event group
|
||||
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 = []
|
||||
super.start()
|
@@ -1,7 +1,7 @@
|
||||
class_name EventTextbox extends "res://scripts/Events/Event.gd"
|
||||
|
||||
# @export var text:Array[String] = [ "Hello Text" ];
|
||||
@export var text:String = "Hello Text"
|
||||
@export_multiline var text:String = "Hello Text"
|
||||
|
||||
func start() -> void:
|
||||
super.start()
|
||||
|
@@ -57,17 +57,19 @@ func isDone() -> bool:
|
||||
return false
|
||||
|
||||
func end() -> void:
|
||||
super.end()
|
||||
for child in childEvents:
|
||||
if child.ended || !child.started:
|
||||
continue
|
||||
child.end()
|
||||
# Send to the parent to end the extra events
|
||||
super.end()
|
||||
|
||||
func reset() -> void:
|
||||
super.reset()
|
||||
childIndex = -1
|
||||
for child in childEvents:
|
||||
child.reset()
|
||||
# Send to the parent to reset the extra events
|
||||
super.reset()
|
||||
|
||||
func startChild(child:Event) -> void:
|
||||
# Inherits some properties from this event.
|
||||
|
@@ -1,14 +1,18 @@
|
||||
class_name EventWithChildren extends "res://scripts/Events/Event.gd"
|
||||
|
||||
var childEvents:Array[Event] = []
|
||||
var extraEvents:Array[Event] = []
|
||||
|
||||
func _init() -> void:
|
||||
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()
|
||||
self.child_entered_tree.connect(onChildEntered)
|
||||
self.child_exiting_tree.connect(onChildExited)
|
||||
self.child_order_changed.connect(onChildOrderChanged)
|
||||
|
||||
func _updateChildEvents() -> void:
|
||||
childEvents = []
|
||||
@@ -24,3 +28,26 @@ func onChildExited(child:Node) -> void:
|
||||
|
||||
func onChildOrderChanged() -> void:
|
||||
_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()
|
Reference in New Issue
Block a user