Files
kurovadis/objects/door_zone.gd
T
2025-06-22 23:22:32 -06:00

40 lines
1.0 KiB
GDScript
Executable File

class_name DoorZone
extends Area2D
@export_category("Outgoing")
@export_file("*.tscn") var TargetRoomPath: String
@export var TargetDoor: String
@export var PreserveX: bool = false
@export var PreserveY: bool = false
@export var PreserveVelocity: bool = false
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta: float) -> void:
pass
func _on_body_entered(body: Node2D) -> void:
if body is Player:
if self.name == global.player_target:
return
var offset := Vector2(0., 0.);
if PreserveX:
offset.x = body.position.x - self.position.x
if PreserveY:
offset.y = body.position.y - self.position.y
global.player_offset = offset
global.player_velocity = Vector2(0., 0.)
if PreserveVelocity:
global.player_velocity = body.velocity
global.player_target = TargetDoor
global.goto_scene(load(TargetRoomPath))
func _on_body_exited(body: Node2D) -> void:
global.player_target = ""