beta-1.2/signal-refactor (#1)

Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
2026-03-15 12:19:12 -06:00
parent 1c95315496
commit 86e3198645
22 changed files with 235 additions and 224 deletions

View File

@@ -1,31 +1,41 @@
extends Node
class_name BenchInteractionConnector
# Signals
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
func OnPlayerInteractScannerAreaEntered(area: Area2D) -> void:
# Private Methods
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()
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
benches_in_range.append(parent)
_benches_in_range.append(parent)
func OnPlayerInteractScannerAreaExited(area: Area2D) -> void:
var parent = area.get_parent()
if parent == null or parent is not WoodenBench or !benches_in_range.has(parent):
func _on_interact_unscanned(area: Area2D) -> void:
var parent: Node = area.get_parent()
if parent == null or parent is not WoodenBench or !_benches_in_range.has(parent):
return
benches_in_range.erase(parent)
_benches_in_range.erase(parent)
func OnPlayerInteractionActionTriggered() -> void:
if benches_in_range.is_empty():
func _on_interact_triggered() -> void:
if _benches_in_range.is_empty():
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_spot_markers := sitting_spots_container.get_children()
@@ -41,18 +51,4 @@ func OnPlayerInteractionActionTriggered() -> void:
if !closest_marker:
return
SitOnBenchTriggered.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)
player.SitOnFurnitureTriggered.emit(closest_marker.global_position, Enums.Directions.DOWN)