beta-1.2/signal-refactor #1
BIN
Assets/Aseprite Files/Home_01_Overlay_01.aseprite
Normal file
BIN
Assets/Aseprite Files/Home_01_Overlay_01.aseprite
Normal file
Binary file not shown.
@@ -24,11 +24,12 @@ radius = 12.0
|
|||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_fu1fx"]
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_fu1fx"]
|
||||||
size = Vector2(6, 5)
|
size = Vector2(6, 5)
|
||||||
|
|
||||||
[node name="Player" type="CharacterBody2D" unique_id=1502234578 node_paths=PackedStringArray("player_sprite", "state_machine") groups=["Player Group"]]
|
[node name="Player" type="CharacterBody2D" unique_id=1502234578 node_paths=PackedStringArray("player_sprite", "state_machine", "interact_scanner") groups=["Player Group"]]
|
||||||
y_sort_enabled = true
|
y_sort_enabled = true
|
||||||
script = ExtResource("1_qqvsf")
|
script = ExtResource("1_qqvsf")
|
||||||
player_sprite = NodePath("Player Sprite")
|
player_sprite = NodePath("Player Sprite")
|
||||||
state_machine = NodePath("State Machine")
|
state_machine = NodePath("State Machine")
|
||||||
|
interact_scanner = NodePath("Marker2D/InteractScanner")
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=495465356]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=495465356]
|
||||||
position = Vector2(0, 4.5)
|
position = Vector2(0, 4.5)
|
||||||
@@ -116,8 +117,6 @@ position = Vector2(0, 9.5)
|
|||||||
shape = SubResource("RectangleShape2D_fu1fx")
|
shape = SubResource("RectangleShape2D_fu1fx")
|
||||||
debug_color = Color(0.79959095, 0.41617078, 0.18507844, 0.41960785)
|
debug_color = Color(0.79959095, 0.41617078, 0.18507844, 0.41960785)
|
||||||
|
|
||||||
[connection signal="CutsceneEnded" from="." to="State Machine/States/Cutscene State" method="OnCutsceneEnded"]
|
|
||||||
[connection signal="CutsceneStarted" from="." to="State Machine/States/Idle State" method="OnCutsceneStarted"]
|
|
||||||
[connection signal="SitOnFurnitureTriggered" from="." to="State Machine/States/Idle State" method="OnSitOnFurnitureTriggered"]
|
[connection signal="SitOnFurnitureTriggered" from="." to="State Machine/States/Idle State" method="OnSitOnFurnitureTriggered"]
|
||||||
[connection signal="DirectionChanged" from="Components/FacingDirectionComponent" to="Player Sprite" method="UpdateSprite"]
|
[connection signal="DirectionChanged" from="Components/FacingDirectionComponent" to="Player Sprite" method="UpdateSprite"]
|
||||||
[connection signal="DirectionChanged" from="Components/FacingDirectionComponent" to="Marker2D/InteractScanner" method="OnDirectionChanged"]
|
[connection signal="DirectionChanged" from="Components/FacingDirectionComponent" to="Marker2D/InteractScanner" method="OnDirectionChanged"]
|
||||||
@@ -125,7 +124,6 @@ debug_color = Color(0.79959095, 0.41617078, 0.18507844, 0.41960785)
|
|||||||
[connection signal="StartedWalking" from="State Machine/States/Walking State" to="Player Sprite" method="UpdateSprite"]
|
[connection signal="StartedWalking" from="State Machine/States/Walking State" to="Player Sprite" method="UpdateSprite"]
|
||||||
[connection signal="PlayerBeganDrawingBow" from="State Machine/States/Drawing Bow State" to="Player Sprite" method="UpdateSprite"]
|
[connection signal="PlayerBeganDrawingBow" from="State Machine/States/Drawing Bow State" to="Player Sprite" method="UpdateSprite"]
|
||||||
[connection signal="PlayerBeganFiringArrow" from="State Machine/States/Firing Arrow State" to="Player Sprite" method="UpdateSprite"]
|
[connection signal="PlayerBeganFiringArrow" from="State Machine/States/Firing Arrow State" to="Player Sprite" method="UpdateSprite"]
|
||||||
[connection signal="PlayerFiredArrow" from="State Machine/States/Firing Arrow State" to="." method="_on_using_item_a_state_arrow_fired"]
|
|
||||||
[connection signal="PlayAnimation" from="State Machine/States/Play Animation State" to="Player Sprite" method="PlaySpecifiedAnimation"]
|
[connection signal="PlayAnimation" from="State Machine/States/Play Animation State" to="Player Sprite" method="PlaySpecifiedAnimation"]
|
||||||
[connection signal="AnimationFinished" from="Player Sprite" to="State Machine/States/Play Animation State" method="OnAnimationFinished"]
|
[connection signal="AnimationFinished" from="Player Sprite" to="State Machine/States/Play Animation State" method="OnAnimationFinished"]
|
||||||
[connection signal="DrawingBowAnimationFinished" from="Player Sprite" to="State Machine/States/Drawing Bow State" method="OnDrawingBowAnimationFinished"]
|
[connection signal="DrawingBowAnimationFinished" from="Player Sprite" to="State Machine/States/Drawing Bow State" method="OnDrawingBowAnimationFinished"]
|
||||||
|
|||||||
@@ -2,6 +2,5 @@
|
|||||||
|
|
||||||
[ext_resource type="Script" uid="uid://c5yjcjk51l4bd" path="res://Scripts/Maps/Connectors/bench_interaction_connector.gd" id="1_34r4h"]
|
[ext_resource type="Script" uid="uid://c5yjcjk51l4bd" path="res://Scripts/Maps/Connectors/bench_interaction_connector.gd" id="1_34r4h"]
|
||||||
|
|
||||||
[node name="Bench Interaction Connector" type="Node" unique_id=541204437 node_paths=PackedStringArray("player")]
|
[node name="Bench Interaction Connector" type="Node" unique_id=541204437]
|
||||||
script = ExtResource("1_34r4h")
|
script = ExtResource("1_34r4h")
|
||||||
player = NodePath("")
|
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 6.6 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bqvnkdyhfa1yq"
|
||||||
|
path="res://.godot/imported/Home_01_Overlay_01.png-5522c04136136f6c0c2aaf9e86a5116f.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Scenes/Maps/Forest Dungeon Entrance/Interiors/Home_01_Overlay_01.png"
|
||||||
|
dest_files=["res://.godot/imported/Home_01_Overlay_01.png-5522c04136136f6c0c2aaf9e86a5116f.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
@@ -10,6 +10,7 @@
|
|||||||
[ext_resource type="PackedScene" uid="uid://b7u4hlvuqiefn" path="res://Scenes/Objects/Chests/Item Chests/item_chest_02 (Metal).tscn" id="4_a58cd"]
|
[ext_resource type="PackedScene" uid="uid://b7u4hlvuqiefn" path="res://Scenes/Objects/Chests/Item Chests/item_chest_02 (Metal).tscn" id="4_a58cd"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b60nr4wfvijpf" path="res://Scenes/Objects/Dialogue/dialogue_trigger.tscn" id="5_msu6a"]
|
[ext_resource type="PackedScene" uid="uid://b60nr4wfvijpf" path="res://Scenes/Objects/Dialogue/dialogue_trigger.tscn" id="5_msu6a"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bm5ewxv51potl" path="res://Assets/Spritesheets/NPCs/Miner_Mike.png" id="6_x3y8m"]
|
[ext_resource type="Texture2D" uid="uid://bm5ewxv51potl" path="res://Assets/Spritesheets/NPCs/Miner_Mike.png" id="6_x3y8m"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bqvnkdyhfa1yq" path="res://Scenes/Maps/Forest Dungeon Entrance/Interiors/Home_01_Overlay_01.png" id="11_6xfm6"]
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_7kg22"]
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_7kg22"]
|
||||||
size = Vector2(32, 8)
|
size = Vector2(32, 8)
|
||||||
@@ -73,15 +74,18 @@ size = Vector2(11, 14)
|
|||||||
[node name="Home 01" type="Node2D" unique_id=1401818514]
|
[node name="Home 01" type="Node2D" unique_id=1401818514]
|
||||||
y_sort_enabled = true
|
y_sort_enabled = true
|
||||||
|
|
||||||
[node name="Collision Loading Zone Connector" type="Node" parent="." unique_id=483597596]
|
[node name="Connectors" type="Node" parent="." unique_id=517749045]
|
||||||
|
|
||||||
|
[node name="Collision Loading Zone Connector" type="Node" parent="Connectors" unique_id=483597596]
|
||||||
script = ExtResource("1_18bbf")
|
script = ExtResource("1_18bbf")
|
||||||
|
|
||||||
[node name="Spawn Marker Connector" type="Node" parent="." unique_id=296643918 node_paths=PackedStringArray("player", "markers")]
|
[node name="Spawn Marker Connector" type="Node" parent="Connectors" unique_id=296643918 node_paths=PackedStringArray("player", "markers")]
|
||||||
script = ExtResource("2_16uj4")
|
script = ExtResource("2_16uj4")
|
||||||
player = NodePath("../Player")
|
player = NodePath("../../Player")
|
||||||
markers = NodePath("../Spawn Markers")
|
markers = NodePath("../../Spawn Markers")
|
||||||
|
|
||||||
[node name="Chest Interaction Connector" parent="." unique_id=625804018 instance=ExtResource("3_ec540")]
|
[node name="Chest Interaction Connector" parent="Connectors" unique_id=625804018 node_paths=PackedStringArray("player") instance=ExtResource("3_ec540")]
|
||||||
|
player = NodePath("../../Player")
|
||||||
|
|
||||||
[node name="Tilemap" type="Node2D" parent="." unique_id=894627186]
|
[node name="Tilemap" type="Node2D" parent="." unique_id=894627186]
|
||||||
y_sort_enabled = true
|
y_sort_enabled = true
|
||||||
@@ -92,7 +96,7 @@ tile_set = ExtResource("1_rf04x")
|
|||||||
|
|
||||||
[node name="Decor" type="TileMapLayer" parent="Tilemap" unique_id=941487815]
|
[node name="Decor" type="TileMapLayer" parent="Tilemap" unique_id=941487815]
|
||||||
y_sort_enabled = true
|
y_sort_enabled = true
|
||||||
tile_map_data = PackedByteArray("AAADAAQABAAAAAAAAAAEAAUABQAAAAAAAAACAAgAAgAAAAIAAAACAAkAAgAAAAMAAAADAAgAAgACAAIAAAADAAkAAgACAAMAAAAEAAgACQADAAAAAAAMAAUACwAAAAgAAAAIAAMACgAGAAAAAAA=")
|
tile_map_data = PackedByteArray("AAADAAQABAAAAAAAAAAEAAUABQAAAAAAAAACAAgAAgAAAAIAAAACAAkAAgAAAAMAAAADAAgAAgACAAIAAAADAAkAAgACAAMAAAAEAAgACQADAAAAAAAMAAUACwAAAAgAAAAIAAMACgAGAAAAAAAJAAQAAwAAAAAAAAAKAAQACQABAAAAAAA=")
|
||||||
tile_set = ExtResource("1_rf04x")
|
tile_set = ExtResource("1_rf04x")
|
||||||
|
|
||||||
[node name="Decor 2" type="TileMapLayer" parent="Tilemap" unique_id=1988290805]
|
[node name="Decor 2" type="TileMapLayer" parent="Tilemap" unique_id=1988290805]
|
||||||
@@ -155,3 +159,9 @@ zoom = Vector2(3, 3)
|
|||||||
|
|
||||||
[node name="Player" parent="." unique_id=1502234578 instance=ExtResource("2_lky26")]
|
[node name="Player" parent="." unique_id=1502234578 instance=ExtResource("2_lky26")]
|
||||||
position = Vector2(108, 139)
|
position = Vector2(108, 139)
|
||||||
|
|
||||||
|
[node name="Overlay" type="Sprite2D" parent="." unique_id=455840170]
|
||||||
|
position = Vector2(124, 217)
|
||||||
|
scale = Vector2(0.25, 0.25)
|
||||||
|
texture = ExtResource("11_6xfm6")
|
||||||
|
offset = Vector2(16, -436)
|
||||||
|
|||||||
@@ -65,15 +65,18 @@ y_sort_enabled = true
|
|||||||
|
|
||||||
[node name="Connectors" type="Node" parent="." unique_id=1365901208]
|
[node name="Connectors" type="Node" parent="." unique_id=1365901208]
|
||||||
|
|
||||||
[node name="Chest Interaction Connector" parent="Connectors" unique_id=625804018 instance=ExtResource("1_jtncl")]
|
[node name="Chest Interaction Connector" parent="Connectors" unique_id=625804018 node_paths=PackedStringArray("player") instance=ExtResource("1_jtncl")]
|
||||||
|
player = NodePath("../../Player")
|
||||||
|
|
||||||
[node name="Arrow Spawner" parent="Connectors" unique_id=627092886 node_paths=PackedStringArray("arrow_parent") instance=ExtResource("2_jtncl")]
|
[node name="Arrow Spawner" parent="Connectors" unique_id=627092886 node_paths=PackedStringArray("player", "arrow_parent") instance=ExtResource("2_jtncl")]
|
||||||
|
player = NodePath("../../Player")
|
||||||
arrow_parent = NodePath("../../Objects/Projectiles")
|
arrow_parent = NodePath("../../Objects/Projectiles")
|
||||||
|
|
||||||
[node name="Bench Interaction Connector" parent="Connectors" unique_id=541204437 node_paths=PackedStringArray("player") instance=ExtResource("3_x6da4")]
|
[node name="Bench Interaction Connector" parent="Connectors" unique_id=541204437 node_paths=PackedStringArray("player") instance=ExtResource("3_x6da4")]
|
||||||
player = NodePath("../../Player")
|
player = NodePath("../../Player")
|
||||||
|
|
||||||
[node name="Interactive Loading Zone Connector" parent="Connectors" unique_id=833475826 instance=ExtResource("4_4lnhp")]
|
[node name="Interactive Loading Zone Connector" parent="Connectors" unique_id=833475826 node_paths=PackedStringArray("player") instance=ExtResource("4_4lnhp")]
|
||||||
|
player = NodePath("../../Player")
|
||||||
|
|
||||||
[node name="Spawn Marker Connector" parent="Connectors" unique_id=807187299 node_paths=PackedStringArray("player", "markers") instance=ExtResource("5_lphfo")]
|
[node name="Spawn Marker Connector" parent="Connectors" unique_id=807187299 node_paths=PackedStringArray("player", "markers") instance=ExtResource("5_lphfo")]
|
||||||
player = NodePath("../../Player")
|
player = NodePath("../../Player")
|
||||||
@@ -337,7 +340,7 @@ destination_marker_name = "Entrance"
|
|||||||
position = Vector2(278, 474)
|
position = Vector2(278, 474)
|
||||||
|
|
||||||
[node name="Player" parent="." unique_id=1502234578 instance=ExtResource("4_4igim")]
|
[node name="Player" parent="." unique_id=1502234578 instance=ExtResource("4_4igim")]
|
||||||
position = Vector2(656, 488)
|
position = Vector2(89, 450)
|
||||||
|
|
||||||
[node name="Camera2D" type="Camera2D" parent="Player" unique_id=1115720225]
|
[node name="Camera2D" type="Camera2D" parent="Player" unique_id=1115720225]
|
||||||
position = Vector2(0, 1)
|
position = Vector2(0, 1)
|
||||||
|
|||||||
8
Scenes/Maps/base_map.tscn
Normal file
8
Scenes/Maps/base_map.tscn
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[gd_scene format=3 uid="uid://cb7es4u3xy5hw"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://da5dg36wink7x" path="res://Scripts/Maps/base_map.gd" id="1_71ugn"]
|
||||||
|
|
||||||
|
[node name="BaseMap" type="Node2D" unique_id=94057185]
|
||||||
|
script = ExtResource("1_71ugn")
|
||||||
|
|
||||||
|
[node name="Connectors" type="Node" parent="." unique_id=226687733]
|
||||||
@@ -13,8 +13,9 @@ script = ExtResource("1_jjgbg")
|
|||||||
[node name="Map Transitioner" type="Node" parent="." unique_id=1528505665]
|
[node name="Map Transitioner" type="Node" parent="." unique_id=1528505665]
|
||||||
script = ExtResource("3_kry3j")
|
script = ExtResource("3_kry3j")
|
||||||
|
|
||||||
[node name="Dialogue Trigger Connector" type="Node" parent="." unique_id=1187622540]
|
[node name="Dialogue Trigger Connector" type="Node" parent="." unique_id=1187622540 node_paths=PackedStringArray("dialogue_box")]
|
||||||
script = ExtResource("4_6bp64")
|
script = ExtResource("4_6bp64")
|
||||||
|
dialogue_box = NodePath("../Gui/Dialogue Box")
|
||||||
|
|
||||||
[node name="World" type="Node2D" parent="." unique_id=578440549]
|
[node name="World" type="Node2D" parent="." unique_id=578440549]
|
||||||
script = ExtResource("2_bo1nx")
|
script = ExtResource("2_bo1nx")
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
extends BaseState
|
extends BaseState
|
||||||
|
class_name FiringArrowState
|
||||||
|
|
||||||
signal PlayerBeganFiringArrow
|
signal PlayerBeganFiringArrow
|
||||||
signal PlayerFiredArrow(spawn_position: Vector2, direction: Vector2)
|
signal ArrowFired(spawn_position: Vector2, direction: Vector2)
|
||||||
|
|
||||||
@export var direction_component: FacingDirectionComponent
|
@export var direction_component: FacingDirectionComponent
|
||||||
@export var arrow_spawn_marker: Marker2D
|
@export var arrow_spawn_marker: Marker2D
|
||||||
@@ -23,7 +24,7 @@ func Enter(_extra_parameters: Dictionary) -> void:
|
|||||||
direction = Vector2.UP
|
direction = Vector2.UP
|
||||||
elif direction_component.current_direction == Enums.Directions.DOWN:
|
elif direction_component.current_direction == Enums.Directions.DOWN:
|
||||||
direction = Vector2.DOWN
|
direction = Vector2.DOWN
|
||||||
PlayerFiredArrow.emit(position, direction)
|
ArrowFired.emit(position, direction)
|
||||||
|
|
||||||
|
|
||||||
func OnFiringArrowAnimationFinished() -> void:
|
func OnFiringArrowAnimationFinished() -> void:
|
||||||
|
|||||||
@@ -1,57 +1,18 @@
|
|||||||
extends CharacterBody2D
|
extends CharacterBody2D
|
||||||
class_name PlayerCharacter
|
class_name PlayerCharacter
|
||||||
|
|
||||||
signal InteractScannerAreaEntered(area: Area2D)
|
# Signals
|
||||||
signal InteractScannerAreaExited(area: Area2D)
|
|
||||||
|
|
||||||
signal InteractScannerBodyEntered(body: Node2D)
|
|
||||||
signal InteractScannerBodyExited(body: Node2D)
|
|
||||||
|
|
||||||
signal InteractionActionTriggered()
|
|
||||||
|
|
||||||
signal ArrowFired(fire_position: Vector2, direction: Vector2)
|
|
||||||
signal SitOnFurnitureTriggered(sitting_position: Vector2, sitting_direction: Enums.Directions)
|
signal SitOnFurnitureTriggered(sitting_position: Vector2, sitting_direction: Enums.Directions)
|
||||||
|
|
||||||
signal CutsceneStarted()
|
# Exports
|
||||||
signal CutsceneEnded()
|
@export var player_sprite: PlayerSprite
|
||||||
|
|
||||||
@export var player_sprite: Node2D
|
|
||||||
@export var state_machine: PlayerStateMachine
|
@export var state_machine: PlayerStateMachine
|
||||||
|
@export var interact_scanner: InteractScanner
|
||||||
|
|
||||||
# Public Methods
|
# Public Methods
|
||||||
func OnSitOnFurnitureTriggered(sitting_position: Vector2, sitting_direction: Enums.Directions):
|
func QueueCutsceneState() -> void:
|
||||||
SitOnFurnitureTriggered.emit(sitting_position, sitting_direction)
|
state_machine.QueueStateChange(PlayerStateMachine.States.CUTSCENE)
|
||||||
|
|
||||||
|
|
||||||
func OnCutsceneStarted() -> void:
|
func QueueEndCutsceneState() -> void:
|
||||||
CutsceneStarted.emit()
|
state_machine.QueueStateChange(PlayerStateMachine.States.IDLE)
|
||||||
|
|
||||||
|
|
||||||
func OnCutsceneEnded() -> void:
|
|
||||||
CutsceneEnded.emit()
|
|
||||||
|
|
||||||
|
|
||||||
# Private Methods
|
|
||||||
func _on_interact_scanner_area_entered(area: Area2D) -> void:
|
|
||||||
InteractScannerAreaEntered.emit(area)
|
|
||||||
|
|
||||||
|
|
||||||
func _on_interact_scanner_area_exited(area: Area2D) -> void:
|
|
||||||
InteractScannerAreaExited.emit(area)
|
|
||||||
|
|
||||||
|
|
||||||
func _on_interact_scanner_body_entered(body: Node2D) -> void:
|
|
||||||
InteractScannerBodyEntered.emit(body)
|
|
||||||
|
|
||||||
|
|
||||||
func _on_interact_scanner_body_exited(body: Node2D) -> void:
|
|
||||||
InteractScannerBodyExited.emit(body)
|
|
||||||
|
|
||||||
|
|
||||||
func _on_interaction_action_triggered() -> void:
|
|
||||||
if state_machine.current_state.IsStateActionable():
|
|
||||||
InteractionActionTriggered.emit()
|
|
||||||
|
|
||||||
|
|
||||||
func _on_using_item_a_state_arrow_fired(fire_position: Vector2, direction: Vector2) -> void:
|
|
||||||
ArrowFired.emit(fire_position, direction)
|
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
extends Node2D
|
extends Node2D
|
||||||
|
class_name PlayerSprite
|
||||||
|
|
||||||
|
# Signals
|
||||||
signal DrawingBowAnimationFinished
|
signal DrawingBowAnimationFinished
|
||||||
signal FiringArrowAnimationFinished
|
signal FiringArrowAnimationFinished
|
||||||
signal AnimationFinished(animation_name: String)
|
signal AnimationFinished(animation_name: String)
|
||||||
|
|
||||||
|
# Exports
|
||||||
@export var state_machine: PlayerStateMachine
|
@export var state_machine: PlayerStateMachine
|
||||||
@export var direction_component: FacingDirectionComponent
|
@export var direction_component: FacingDirectionComponent
|
||||||
|
|
||||||
|
# OnReady Variables
|
||||||
@onready var full: AnimatedSprite2D = $Full
|
@onready var full: AnimatedSprite2D = $Full
|
||||||
@onready var base: AnimatedSprite2D = $Base
|
|
||||||
@onready var hair: AnimatedSprite2D = $Hair
|
|
||||||
@onready var pants: AnimatedSprite2D = $Pants
|
|
||||||
@onready var hands: AnimatedSprite2D = $Hands
|
|
||||||
@onready var shoes: AnimatedSprite2D = $Shoes
|
|
||||||
|
|
||||||
var all_parts: Array[AnimatedSprite2D]
|
# Private Variables
|
||||||
var current_animation := "idle-down"
|
var _all_parts: Array[AnimatedSprite2D]
|
||||||
var is_flipped := false
|
var _current_animation := "idle-down"
|
||||||
|
var _is_flipped := false
|
||||||
|
|
||||||
# Public Methods
|
# Public Methods
|
||||||
func UpdateSprite() -> void:
|
func UpdateSprite() -> void:
|
||||||
@@ -25,37 +25,37 @@ func UpdateSprite() -> void:
|
|||||||
var animation := _build_animation_name(current_state, current_direction)
|
var animation := _build_animation_name(current_state, current_direction)
|
||||||
var should_flip := _should_flip_horizontal()
|
var should_flip := _should_flip_horizontal()
|
||||||
|
|
||||||
if animation == current_animation and should_flip == is_flipped:
|
if animation == _current_animation and should_flip == _is_flipped:
|
||||||
return
|
return
|
||||||
|
|
||||||
current_animation = animation
|
_current_animation = animation
|
||||||
is_flipped = should_flip
|
_is_flipped = should_flip
|
||||||
|
|
||||||
for part in all_parts:
|
for part in _all_parts:
|
||||||
part.animation = animation
|
part.animation = animation
|
||||||
part.play()
|
part.play()
|
||||||
part.flip_h = should_flip
|
part.flip_h = should_flip
|
||||||
|
|
||||||
|
|
||||||
func OnAnimationFinished() -> void:
|
func OnAnimationFinished() -> void:
|
||||||
if current_animation.begins_with("drawing-bow-"):
|
if _current_animation.begins_with("drawing-bow-"):
|
||||||
DrawingBowAnimationFinished.emit()
|
DrawingBowAnimationFinished.emit()
|
||||||
elif current_animation.begins_with("firing-arrow-"):
|
elif _current_animation.begins_with("firing-arrow-"):
|
||||||
FiringArrowAnimationFinished.emit()
|
FiringArrowAnimationFinished.emit()
|
||||||
AnimationFinished.emit(current_animation)
|
AnimationFinished.emit(_current_animation)
|
||||||
|
|
||||||
|
|
||||||
func PlaySpecifiedAnimation(animation_name: String) -> void:
|
func PlaySpecifiedAnimation(animation_name: String) -> void:
|
||||||
current_animation = animation_name
|
_current_animation = animation_name
|
||||||
for part in all_parts:
|
for part in _all_parts:
|
||||||
part.animation = animation_name
|
part.animation = animation_name
|
||||||
part.play()
|
part.play()
|
||||||
|
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
all_parts = [
|
_all_parts = [
|
||||||
full, #base, hair, pants, hands, shoes
|
full
|
||||||
]
|
]
|
||||||
|
|
||||||
UpdateSprite()
|
UpdateSprite()
|
||||||
@@ -63,8 +63,8 @@ func _ready() -> void:
|
|||||||
|
|
||||||
func _build_animation_name(state: BaseState, direction: Enums.Directions) -> String:
|
func _build_animation_name(state: BaseState, direction: Enums.Directions) -> String:
|
||||||
# e.g. "idle-down", "walking-up"
|
# e.g. "idle-down", "walking-up"
|
||||||
var state_str = state.GetAnimationBaseName().replace("_", "-")
|
var state_str := state.GetAnimationBaseName().replace("_", "-")
|
||||||
var direction_str = _direction_to_animation_state(direction)
|
var direction_str := _direction_to_animation_state(direction)
|
||||||
return "%s-%s" % [state_str, direction_str]
|
return "%s-%s" % [state_str, direction_str]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,24 +1,22 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
# Exports
|
||||||
|
@export var player: PlayerCharacter
|
||||||
@export var arrow_parent: Node2D
|
@export var arrow_parent: Node2D
|
||||||
|
|
||||||
|
# Preloads
|
||||||
const wooden_arrow_scene: PackedScene = preload("uid://b2wq5m01b68rx")
|
const wooden_arrow_scene: PackedScene = preload("uid://b2wq5m01b68rx")
|
||||||
|
|
||||||
# Public Methods
|
|
||||||
func OnArrowFired(fire_position: Vector2, direction: Vector2) -> void:
|
|
||||||
var wooden_arrow := wooden_arrow_scene.instantiate() as BaseProjectile
|
|
||||||
wooden_arrow.SetProjectileStartAndDirection(fire_position, direction)
|
|
||||||
|
|
||||||
if arrow_parent == null:
|
|
||||||
return
|
|
||||||
arrow_parent.add_child(wooden_arrow)
|
|
||||||
|
|
||||||
|
|
||||||
# Private Methods
|
# Private Methods
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var players := get_tree().get_nodes_in_group("Player Group")
|
var firing_arrow_state: FiringArrowState = player.get_node("State Machine/States/Firing Arrow State")
|
||||||
if players == null or players.is_empty() or players[0] is not PlayerCharacter:
|
firing_arrow_state.ArrowFired.connect(_on_arrow_fired)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_arrow_fired(fire_position: Vector2, direction: Vector2) -> void:
|
||||||
|
var wooden_arrow := wooden_arrow_scene.instantiate() as BaseProjectile
|
||||||
|
wooden_arrow.SetProjectileStartAndDirection(fire_position, direction)
|
||||||
|
|
||||||
|
if arrow_parent == null:
|
||||||
return
|
return
|
||||||
|
arrow_parent.add_child(wooden_arrow)
|
||||||
var player := players[0] as PlayerCharacter
|
|
||||||
player.ArrowFired.connect(OnArrowFired)
|
|
||||||
|
|||||||
@@ -1,31 +1,41 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
class_name BenchInteractionConnector
|
||||||
|
|
||||||
|
# Signals
|
||||||
signal SitOnBenchTriggered(position: Vector2, sitting_direction: Enums.Directions)
|
signal SitOnBenchTriggered(position: Vector2, sitting_direction: Enums.Directions)
|
||||||
|
|
||||||
@export var player: CharacterBody2D
|
# Exports
|
||||||
|
@export var player: PlayerCharacter
|
||||||
|
|
||||||
var benches_in_range: Array[WoodenBench] = []
|
# Private Variables
|
||||||
|
var _benches_in_range: Array[WoodenBench] = []
|
||||||
|
|
||||||
# Public Methods
|
# Private Methods
|
||||||
func OnPlayerInteractScannerAreaEntered(area: Area2D) -> void:
|
func _ready() -> void:
|
||||||
|
player.interact_scanner.area_entered.connect(_on_interact_scanned)
|
||||||
|
player.interact_scanner.area_exited.connect(_on_interact_unscanned)
|
||||||
|
player.interact_scanner.InteractionActionTriggered.connect(_on_interact_triggered)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_interact_scanned(area: Area2D) -> void:
|
||||||
var parent := area.get_parent()
|
var parent := area.get_parent()
|
||||||
if parent == null or parent is not WoodenBench or benches_in_range.has(parent):
|
if parent == null or parent is not WoodenBench or _benches_in_range.has(parent):
|
||||||
return
|
return
|
||||||
benches_in_range.append(parent)
|
_benches_in_range.append(parent)
|
||||||
|
|
||||||
|
|
||||||
func OnPlayerInteractScannerAreaExited(area: Area2D) -> void:
|
func _on_interact_unscanned(area: Area2D) -> void:
|
||||||
var parent = area.get_parent()
|
var parent: Node = area.get_parent()
|
||||||
if parent == null or parent is not WoodenBench or !benches_in_range.has(parent):
|
if parent == null or parent is not WoodenBench or !_benches_in_range.has(parent):
|
||||||
return
|
return
|
||||||
benches_in_range.erase(parent)
|
_benches_in_range.erase(parent)
|
||||||
|
|
||||||
|
|
||||||
func OnPlayerInteractionActionTriggered() -> void:
|
func _on_interact_triggered() -> void:
|
||||||
if benches_in_range.is_empty():
|
if _benches_in_range.is_empty():
|
||||||
return
|
return
|
||||||
|
|
||||||
var bench := benches_in_range[0]
|
var bench := _benches_in_range[0]
|
||||||
var sitting_spots_container := bench.get_node("Sitting Spots") as Node2D
|
var sitting_spots_container := bench.get_node("Sitting Spots") as Node2D
|
||||||
var sitting_spot_markers := sitting_spots_container.get_children()
|
var sitting_spot_markers := sitting_spots_container.get_children()
|
||||||
|
|
||||||
@@ -41,18 +51,4 @@ func OnPlayerInteractionActionTriggered() -> void:
|
|||||||
if !closest_marker:
|
if !closest_marker:
|
||||||
return
|
return
|
||||||
|
|
||||||
SitOnBenchTriggered.emit(closest_marker.global_position, Enums.Directions.DOWN)
|
player.SitOnFurnitureTriggered.emit(closest_marker.global_position, Enums.Directions.DOWN)
|
||||||
|
|
||||||
|
|
||||||
# Private Methods
|
|
||||||
func _ready() -> void:
|
|
||||||
var all_players := get_tree().get_nodes_in_group("Player Group")
|
|
||||||
if all_players == null or all_players.is_empty():
|
|
||||||
return
|
|
||||||
|
|
||||||
for player_node in all_players:
|
|
||||||
var player := player_node as PlayerCharacter
|
|
||||||
|
|
||||||
player.InteractScannerAreaEntered.connect(OnPlayerInteractScannerAreaEntered)
|
|
||||||
player.InteractScannerAreaExited.connect(OnPlayerInteractScannerAreaExited)
|
|
||||||
player.InteractionActionTriggered.connect(OnPlayerInteractionActionTriggered)
|
|
||||||
|
|||||||
@@ -1,53 +1,20 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
# Drop-in that automatically connects signals from player to chest objects
|
# Signals
|
||||||
signal ChestInteractedWith(chest: BaseChest)
|
|
||||||
signal OpeningOfOpenedChestAttempted
|
signal OpeningOfOpenedChestAttempted
|
||||||
|
|
||||||
|
# Exports
|
||||||
|
@export var player: PlayerCharacter
|
||||||
@export var auto_connect_all_chests := true
|
@export var auto_connect_all_chests := true
|
||||||
|
|
||||||
var chests_in_range: Array[BaseChest] = []
|
# Private Variables
|
||||||
|
var _chests_in_range: Array[BaseChest] = []
|
||||||
# Public Methods
|
|
||||||
func OnPlayerInteractScannerAreaEntered(area: Area2D) -> void:
|
|
||||||
var chest = area.get_parent()
|
|
||||||
if chest == null or chest is not BaseChest:
|
|
||||||
return
|
|
||||||
if chests_in_range.has(chest):
|
|
||||||
return
|
|
||||||
chests_in_range.append(chest)
|
|
||||||
|
|
||||||
|
|
||||||
func OnPlayerInteractScannerAreaExited(area: Area2D) -> void:
|
|
||||||
var chest = area.get_parent()
|
|
||||||
if chest == null or chest is not BaseChest:
|
|
||||||
return
|
|
||||||
if !chests_in_range.has(chest):
|
|
||||||
return
|
|
||||||
chests_in_range.erase(chest)
|
|
||||||
|
|
||||||
|
|
||||||
func OnPlayerInteractionActionTriggered() -> void:
|
|
||||||
if chests_in_range.is_empty():
|
|
||||||
return
|
|
||||||
|
|
||||||
var chest := chests_in_range[0]
|
|
||||||
if !chest.is_open:
|
|
||||||
chest.Open()
|
|
||||||
else:
|
|
||||||
chest.OpenAlreadyOpened()
|
|
||||||
OpeningOfOpenedChestAttempted.emit()
|
|
||||||
|
|
||||||
|
|
||||||
# Private Methods
|
# Private Methods
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var player := GroupUtils.GetPlayer()
|
player.interact_scanner.area_entered.connect(_on_interact_scanned)
|
||||||
if player == null:
|
player.interact_scanner.area_exited.connect(_on_interact_unscanned)
|
||||||
return
|
player.interact_scanner.InteractionActionTriggered.connect(_on_interact_triggered)
|
||||||
|
|
||||||
player.InteractScannerAreaEntered.connect(OnPlayerInteractScannerAreaEntered)
|
|
||||||
player.InteractScannerAreaExited.connect(OnPlayerInteractScannerAreaExited)
|
|
||||||
player.InteractionActionTriggered.connect(OnPlayerInteractionActionTriggered)
|
|
||||||
|
|
||||||
var chests := GroupUtils.GetAllTreasureChests()
|
var chests := GroupUtils.GetAllTreasureChests()
|
||||||
for chest in chests:
|
for chest in chests:
|
||||||
@@ -58,7 +25,7 @@ func _on_chest_opening_animation_started() -> void:
|
|||||||
var player := GroupUtils.GetPlayer()
|
var player := GroupUtils.GetPlayer()
|
||||||
var children := player.get_children()
|
var children := player.get_children()
|
||||||
|
|
||||||
player.OnCutsceneStarted()
|
player.QueueCutsceneState()
|
||||||
|
|
||||||
var camera_idx := children.find_custom(func(x): return x is Camera2D)
|
var camera_idx := children.find_custom(func(x): return x is Camera2D)
|
||||||
if camera_idx == -1: return
|
if camera_idx == -1: return
|
||||||
@@ -77,4 +44,33 @@ func _on_chest_opening_animation_started() -> void:
|
|||||||
|
|
||||||
# Zoom back out
|
# Zoom back out
|
||||||
await get_tree().create_tween().tween_property(camera, "zoom", current_zoom, 0.5).finished
|
await get_tree().create_tween().tween_property(camera, "zoom", current_zoom, 0.5).finished
|
||||||
|
|
||||||
|
|
||||||
|
func _on_interact_scanned(area: Area2D) -> void:
|
||||||
|
var chest = area.get_parent()
|
||||||
|
if chest == null or chest is not BaseChest:
|
||||||
|
return
|
||||||
|
if _chests_in_range.has(chest):
|
||||||
|
return
|
||||||
|
_chests_in_range.append(chest)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_interact_unscanned(area: Area2D) -> void:
|
||||||
|
var chest = area.get_parent()
|
||||||
|
if chest == null or chest is not BaseChest:
|
||||||
|
return
|
||||||
|
if !_chests_in_range.has(chest):
|
||||||
|
return
|
||||||
|
_chests_in_range.erase(chest)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_interact_triggered() -> void:
|
||||||
|
if _chests_in_range.is_empty():
|
||||||
|
return
|
||||||
|
|
||||||
|
var chest := _chests_in_range[0]
|
||||||
|
if !chest.is_open:
|
||||||
|
chest.Open()
|
||||||
|
else:
|
||||||
|
chest.OpenAlreadyOpened()
|
||||||
|
OpeningOfOpenedChestAttempted.emit()
|
||||||
|
|||||||
@@ -1,39 +1,35 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
# Exports
|
||||||
|
@export var player: PlayerCharacter
|
||||||
|
|
||||||
|
# Private Variables
|
||||||
var _zones_in_range: Array[InteractiveLoadingZone] = []
|
var _zones_in_range: Array[InteractiveLoadingZone] = []
|
||||||
|
|
||||||
# Public Methods
|
# Private Methods
|
||||||
func OnPlayerInteractScannerAreaEntered(area: Area2D) -> void:
|
func _ready() -> void:
|
||||||
|
player.interact_scanner.area_entered.connect(_on_interact_scanned)
|
||||||
|
player.interact_scanner.area_exited.connect(_on_interact_unscanned)
|
||||||
|
player.interact_scanner.InteractionActionTriggered.connect(_on_interact_triggered)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_interact_scanned(area: Area2D) -> void:
|
||||||
if area is not InteractiveLoadingZone or _zones_in_range.has(area):
|
if area is not InteractiveLoadingZone or _zones_in_range.has(area):
|
||||||
return
|
return
|
||||||
|
|
||||||
_zones_in_range.append(area)
|
_zones_in_range.append(area)
|
||||||
|
|
||||||
|
|
||||||
func OnPlayerInteractScannerAreaExited(area: Area2D) -> void:
|
func _on_interact_unscanned(area: Area2D) -> void:
|
||||||
if area is not InteractiveLoadingZone or !_zones_in_range.has(area):
|
if area is not InteractiveLoadingZone or !_zones_in_range.has(area):
|
||||||
return
|
return
|
||||||
|
|
||||||
_zones_in_range.erase(area)
|
_zones_in_range.erase(area)
|
||||||
|
|
||||||
|
|
||||||
func OnPlayerInteractionActionTriggered() -> void:
|
func _on_interact_triggered() -> void:
|
||||||
if _zones_in_range.is_empty():
|
if _zones_in_range.is_empty():
|
||||||
return
|
return
|
||||||
|
|
||||||
var zone := _zones_in_range[0]
|
var zone := _zones_in_range[0]
|
||||||
zone.Activate()
|
zone.Activate()
|
||||||
|
|
||||||
|
|
||||||
# Private Methods
|
|
||||||
func _ready() -> void:
|
|
||||||
var all_players := get_tree().get_nodes_in_group("Player Group")
|
|
||||||
if all_players == null or all_players.is_empty():
|
|
||||||
return
|
|
||||||
|
|
||||||
for player_node in all_players:
|
|
||||||
var player := player_node as PlayerCharacter
|
|
||||||
|
|
||||||
player.InteractScannerAreaEntered.connect(OnPlayerInteractScannerAreaEntered)
|
|
||||||
player.InteractScannerAreaExited.connect(OnPlayerInteractScannerAreaExited)
|
|
||||||
player.InteractionActionTriggered.connect(OnPlayerInteractionActionTriggered)
|
|
||||||
|
|||||||
2
Scripts/Maps/base_map.gd
Normal file
2
Scripts/Maps/base_map.gd
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
extends Node2D
|
||||||
|
class_name BaseMap
|
||||||
1
Scripts/Maps/base_map.gd.uid
Normal file
1
Scripts/Maps/base_map.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://da5dg36wink7x
|
||||||
@@ -39,7 +39,7 @@ func _process(_delta: float) -> void:
|
|||||||
if !visible:
|
if !visible:
|
||||||
return
|
return
|
||||||
|
|
||||||
if Input.is_action_just_pressed("player_interact") and !InputManager.ShouldIgnoreAction("player_interact"):
|
if Input.is_action_just_pressed("player_interact"):
|
||||||
var finished := _proceed_dialogue()
|
var finished := _proceed_dialogue()
|
||||||
if finished:
|
if finished:
|
||||||
visible = false
|
visible = false
|
||||||
|
|||||||
@@ -1,30 +1,13 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
# Signals
|
||||||
signal DialogueTriggered(dialogue_name: String)
|
signal DialogueTriggered(dialogue_name: String)
|
||||||
|
|
||||||
@onready var dialogue_box: DialogueBox = $"../Gui/Dialogue Box"
|
# Exports
|
||||||
|
@export var dialogue_box: DialogueBox
|
||||||
var dialogue_triggers_in_area: Array[DialogueTrigger] = []
|
|
||||||
|
|
||||||
# Public Methods
|
|
||||||
func OnPlayerInteractScannerAreaEntered(area: Area2D) -> void:
|
|
||||||
if area is not DialogueTrigger or dialogue_triggers_in_area.has(area):
|
|
||||||
return
|
|
||||||
dialogue_triggers_in_area.append(area)
|
|
||||||
|
|
||||||
|
|
||||||
func OnPlayerInteractScannerAreaExited(area: Area2D) -> void:
|
|
||||||
if area is not DialogueTrigger or !dialogue_triggers_in_area.has(area): return
|
|
||||||
dialogue_triggers_in_area.erase(area)
|
|
||||||
|
|
||||||
|
|
||||||
func OnPlayerInteractionActionTriggered() -> void:
|
|
||||||
if dialogue_triggers_in_area.is_empty():
|
|
||||||
return
|
|
||||||
|
|
||||||
var trigger := dialogue_triggers_in_area[0]
|
|
||||||
trigger.Trigger()
|
|
||||||
|
|
||||||
|
# Private Variables
|
||||||
|
var _dialogue_triggers_in_area: Array[DialogueTrigger] = []
|
||||||
|
|
||||||
# Private Methods
|
# Private Methods
|
||||||
func _on_map_changed(map_id: Enums.MapIds) -> void:
|
func _on_map_changed(map_id: Enums.MapIds) -> void:
|
||||||
@@ -32,19 +15,41 @@ func _on_map_changed(map_id: Enums.MapIds) -> void:
|
|||||||
if !player:
|
if !player:
|
||||||
return
|
return
|
||||||
|
|
||||||
player.InteractScannerAreaEntered.connect(OnPlayerInteractScannerAreaEntered)
|
player.interact_scanner.area_entered.connect(_on_interact_scanned)
|
||||||
player.InteractScannerAreaExited.connect(OnPlayerInteractScannerAreaExited)
|
player.interact_scanner.area_exited.connect(_on_interact_unscanned)
|
||||||
player.InteractionActionTriggered.connect(OnPlayerInteractionActionTriggered)
|
player.interact_scanner.InteractionActionTriggered.connect(_on_interact_triggered)
|
||||||
|
|
||||||
dialogue_box.DialogueStarted.connect(player.OnCutsceneStarted)
|
dialogue_box.DialogueStarted.connect(player.QueueCutsceneState)
|
||||||
dialogue_box.DialogueEnded.connect(player.OnCutsceneEnded)
|
dialogue_box.DialogueEnded.connect(player.QueueEndCutsceneState)
|
||||||
|
|
||||||
var dialogue_triggers := GroupUtils.GetAllDialogueTriggers()
|
var dialogue_triggers := GroupUtils.GetAllDialogueTriggers()
|
||||||
print("Dialogue Triggers on map [%s]: [%d]" % [Enums.MapIds.keys()[map_id], len(dialogue_triggers)])
|
|
||||||
|
|
||||||
for trigger in dialogue_triggers:
|
for trigger in dialogue_triggers:
|
||||||
trigger.DialogueTriggered.connect(_on_dialogue_triggered)
|
trigger.DialogueTriggered.connect(_on_dialogue_triggered)
|
||||||
|
|
||||||
|
|
||||||
func _on_dialogue_triggered(dialogue_name: String) -> void:
|
func _on_dialogue_triggered(dialogue_name: String) -> void:
|
||||||
|
# Wait one frame so we don't immediately close dialogue box
|
||||||
|
# TODO This is stupid
|
||||||
|
await get_tree().process_frame
|
||||||
DialogueTriggered.emit(dialogue_name)
|
DialogueTriggered.emit(dialogue_name)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_interact_scanned(area: Area2D) -> void:
|
||||||
|
if area is not DialogueTrigger or _dialogue_triggers_in_area.has(area):
|
||||||
|
return
|
||||||
|
_dialogue_triggers_in_area.append(area)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_interact_unscanned(area: Area2D) -> void:
|
||||||
|
if area is not DialogueTrigger or !_dialogue_triggers_in_area.has(area):
|
||||||
|
return
|
||||||
|
_dialogue_triggers_in_area.erase(area)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_interact_triggered() -> void:
|
||||||
|
if _dialogue_triggers_in_area.is_empty():
|
||||||
|
return
|
||||||
|
|
||||||
|
var trigger := _dialogue_triggers_in_area[0]
|
||||||
|
trigger.Trigger()
|
||||||
|
|||||||
@@ -34,10 +34,6 @@ func _on_map_transition_queued(map_id: Enums.MapIds, marker_name: String) -> voi
|
|||||||
MapChanged.emit(map_id)
|
MapChanged.emit(map_id)
|
||||||
|
|
||||||
|
|
||||||
func _connect_signals() -> void:
|
|
||||||
_connect_loading_zone_transporters()
|
|
||||||
|
|
||||||
|
|
||||||
func _connect_loading_zone_transporters() -> void:
|
func _connect_loading_zone_transporters() -> void:
|
||||||
var loading_zone_transporters := GroupUtils.GetAllLoadingZoneTransporters()
|
var loading_zone_transporters := GroupUtils.GetAllLoadingZoneTransporters()
|
||||||
print("Loading Zones: %d" % len(loading_zone_transporters))
|
print("Loading Zones: %d" % len(loading_zone_transporters))
|
||||||
|
|||||||
Reference in New Issue
Block a user