beta-1.0
This commit is contained in:
58
Scripts/Maps/Connectors/bench_interaction_connector.gd
Normal file
58
Scripts/Maps/Connectors/bench_interaction_connector.gd
Normal file
@@ -0,0 +1,58 @@
|
||||
extends Node
|
||||
|
||||
signal SitOnBenchTriggered(position: Vector2, sitting_direction: Enums.Directions)
|
||||
|
||||
@export var player: CharacterBody2D
|
||||
|
||||
var benches_in_range: Array[WoodenBench] = []
|
||||
|
||||
# Public Methods
|
||||
func OnPlayerInteractScannerAreaEntered(area: Area2D) -> void:
|
||||
var parent := area.get_parent()
|
||||
if parent == null or parent is not WoodenBench or benches_in_range.has(parent):
|
||||
return
|
||||
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):
|
||||
return
|
||||
benches_in_range.erase(parent)
|
||||
|
||||
|
||||
func OnPlayerInteractionActionTriggered() -> void:
|
||||
if benches_in_range.is_empty():
|
||||
return
|
||||
|
||||
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()
|
||||
|
||||
var closest_marker: Marker2D
|
||||
var distance_to_player := 9999.0
|
||||
for node in sitting_spot_markers:
|
||||
var marker := node as Marker2D
|
||||
var distance := marker.global_position.distance_to(player.global_position)
|
||||
if distance < distance_to_player:
|
||||
closest_marker = marker
|
||||
distance_to_player = distance
|
||||
|
||||
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)
|
||||
@@ -0,0 +1 @@
|
||||
uid://c5yjcjk51l4bd
|
||||
26
Scripts/Maps/Connectors/camera_limit_connector.gd
Normal file
26
Scripts/Maps/Connectors/camera_limit_connector.gd
Normal file
@@ -0,0 +1,26 @@
|
||||
extends Area2D
|
||||
|
||||
@export var camera_to_limit: Camera2D
|
||||
@export var auto_limit := true
|
||||
|
||||
func _ready() -> void:
|
||||
if camera_to_limit == null or !auto_limit or get_child_count() == 0:
|
||||
return
|
||||
|
||||
var collision_shape: CollisionShape2D = get_children()[0]
|
||||
if collision_shape.shape is not RectangleShape2D:
|
||||
return
|
||||
|
||||
var limits := _get_normalized_limits(collision_shape)
|
||||
camera_to_limit.limit_left = limits.position.x
|
||||
camera_to_limit.limit_top = limits.position.y
|
||||
camera_to_limit.limit_right = limits.end.x
|
||||
camera_to_limit.limit_bottom = limits.end.y
|
||||
|
||||
|
||||
func _get_normalized_limits(collision_shape: CollisionShape2D) -> Rect2i:
|
||||
var rectangle_shape := collision_shape.shape as RectangleShape2D
|
||||
var rect_position := collision_shape.position
|
||||
var size := rectangle_shape.size
|
||||
var begin := rect_position - size / 2
|
||||
return Rect2(begin.x, begin.y, size.x, size.y)
|
||||
1
Scripts/Maps/Connectors/camera_limit_connector.gd.uid
Normal file
1
Scripts/Maps/Connectors/camera_limit_connector.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://kfupww4frb1r
|
||||
53
Scripts/Maps/Connectors/chest_interaction_connector.gd
Normal file
53
Scripts/Maps/Connectors/chest_interaction_connector.gd
Normal file
@@ -0,0 +1,53 @@
|
||||
extends Node
|
||||
|
||||
# Drop-in that automatically connects signals from player to chest objects
|
||||
signal ChestInteractedWith(chest: BaseChest)
|
||||
signal OpeningOfOpenedChestAttempted
|
||||
|
||||
@export var auto_connect_all_chests := true
|
||||
|
||||
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
|
||||
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)
|
||||
@@ -0,0 +1 @@
|
||||
uid://dw76slp457s1v
|
||||
12
Scripts/Maps/Connectors/collision_loading_zone_connector.gd
Normal file
12
Scripts/Maps/Connectors/collision_loading_zone_connector.gd
Normal file
@@ -0,0 +1,12 @@
|
||||
extends Node
|
||||
|
||||
@export var player: PlayerCharacter
|
||||
|
||||
# Public Methods
|
||||
func OnPlayerAreaEntered(area: Area2D) -> void:
|
||||
pass
|
||||
|
||||
|
||||
# Private Methods
|
||||
func _ready() -> void:
|
||||
pass
|
||||
@@ -0,0 +1 @@
|
||||
uid://dbscr0b7k3rtp
|
||||
@@ -0,0 +1,39 @@
|
||||
extends Node
|
||||
|
||||
var _zones_in_range: Array[InteractiveLoadingZone] = []
|
||||
|
||||
# Public Methods
|
||||
func OnPlayerInteractScannerAreaEntered(area: Area2D) -> void:
|
||||
if area is not InteractiveLoadingZone or _zones_in_range.has(area):
|
||||
return
|
||||
|
||||
_zones_in_range.append(area)
|
||||
|
||||
|
||||
func OnPlayerInteractScannerAreaExited(area: Area2D) -> void:
|
||||
if area is not InteractiveLoadingZone or !_zones_in_range.has(area):
|
||||
return
|
||||
|
||||
_zones_in_range.erase(area)
|
||||
|
||||
|
||||
func OnPlayerInteractionActionTriggered() -> void:
|
||||
if _zones_in_range.is_empty():
|
||||
return
|
||||
|
||||
var zone := _zones_in_range[0]
|
||||
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)
|
||||
@@ -0,0 +1 @@
|
||||
uid://d3hhbegfxdnqq
|
||||
16
Scripts/Maps/Connectors/spawn_marker_connector.gd
Normal file
16
Scripts/Maps/Connectors/spawn_marker_connector.gd
Normal file
@@ -0,0 +1,16 @@
|
||||
extends Node
|
||||
|
||||
@export var player: CharacterBody2D
|
||||
@export var markers: Node2D
|
||||
|
||||
# Public Methods
|
||||
func _ready() -> void:
|
||||
var marker_name := MapLoader.GetSpawnMarker()
|
||||
if !marker_name:
|
||||
return
|
||||
|
||||
for child in markers.get_children():
|
||||
if child.name == marker_name:
|
||||
var marker := child as Marker2D
|
||||
var position := marker.global_position
|
||||
player.position = position
|
||||
1
Scripts/Maps/Connectors/spawn_marker_connector.gd.uid
Normal file
1
Scripts/Maps/Connectors/spawn_marker_connector.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dkcsftcdqtmg
|
||||
Reference in New Issue
Block a user