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://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"
|
|
||||||
|
@@ -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 = []
|
|
||||||
|
@@ -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()
|
||||||
|
@@ -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.
|
||||||
|
@@ -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()
|
Reference in New Issue
Block a user