init
This commit is contained in:
14
interactables/dungeon/scripts/barred_door.gd
Normal file
14
interactables/dungeon/scripts/barred_door.gd
Normal file
@@ -0,0 +1,14 @@
|
||||
class_name BarredDoor extends Node2D
|
||||
|
||||
@onready var animation_player: AnimationPlayer = $AnimationPlayer
|
||||
|
||||
func _ready() -> void:
|
||||
pass
|
||||
|
||||
func open_door() -> void:
|
||||
animation_player.play("open_door")
|
||||
pass
|
||||
|
||||
func close_door() -> void:
|
||||
animation_player.play("close_door")
|
||||
|
||||
1
interactables/dungeon/scripts/barred_door.gd.uid
Normal file
1
interactables/dungeon/scripts/barred_door.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://c7b0f1rtxh6ef
|
||||
49
interactables/dungeon/scripts/locked_door.gd
Normal file
49
interactables/dungeon/scripts/locked_door.gd
Normal file
@@ -0,0 +1,49 @@
|
||||
class_name LockedDoor extends Node2D
|
||||
|
||||
var open := false
|
||||
|
||||
@export var key_item: ItemData
|
||||
@export var locked_audio: AudioStream
|
||||
@export var open_audio: AudioStream
|
||||
|
||||
@onready var animation_player: AnimationPlayer = $AnimationPlayer
|
||||
@onready var audio: AudioStreamPlayer2D = $AudioStreamPlayer2D
|
||||
@onready var open_data: PersistentDataHandler = $PersistentDataHandler
|
||||
@onready var interact_area: Area2D = $InteractArea
|
||||
|
||||
func _ready() -> void:
|
||||
interact_area.area_entered.connect(on_area_entered)
|
||||
interact_area.area_exited.connect(on_area_exited)
|
||||
open_data.data_loaded.connect(set_state)
|
||||
set_state()
|
||||
|
||||
func on_open_door() -> void:
|
||||
if !key_item:
|
||||
return
|
||||
var door_unlocked = PlayerManager.INVENTORY_DATA.use_item(key_item)
|
||||
|
||||
if door_unlocked:
|
||||
animation_player.play("open_door")
|
||||
audio.stream = open_audio
|
||||
open_data.set_value()
|
||||
else:
|
||||
audio.stream = locked_audio
|
||||
|
||||
audio.play()
|
||||
|
||||
func on_area_entered(_area: Area2D) -> void:
|
||||
PlayerManager.interact_pressed.connect(on_open_door)
|
||||
|
||||
func on_area_exited(_area: Area2D) -> void:
|
||||
PlayerManager.interact_pressed.disconnect(on_open_door)
|
||||
|
||||
func close_door() -> void:
|
||||
animation_player.play("close_door")
|
||||
|
||||
func set_state() -> void:
|
||||
open = open_data.value
|
||||
if open:
|
||||
animation_player.play("opened")
|
||||
else:
|
||||
animation_player.play("closed")
|
||||
|
||||
1
interactables/dungeon/scripts/locked_door.gd.uid
Normal file
1
interactables/dungeon/scripts/locked_door.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://oyjsrhwdd54n
|
||||
43
interactables/dungeon/scripts/pressure_plate.gd
Normal file
43
interactables/dungeon/scripts/pressure_plate.gd
Normal file
@@ -0,0 +1,43 @@
|
||||
class_name PressurePlate extends Node2D
|
||||
|
||||
signal activated
|
||||
signal deactivated
|
||||
|
||||
var bodies := 0
|
||||
var is_active := false
|
||||
var offset_rectangle: Rect2
|
||||
|
||||
@onready var area: Area2D = $Area2D
|
||||
@onready var audio: AudioStreamPlayer2D = $AudioStreamPlayer2D
|
||||
@onready var audio_activate: AudioStream = preload("res://interactables/dungeon/lever-01.wav")
|
||||
@onready var audio_deactivate: AudioStream = preload("res://interactables/dungeon/lever-02.wav")
|
||||
@onready var sprite: Sprite2D = $Sprite2D
|
||||
|
||||
func _ready() -> void:
|
||||
area.body_entered.connect(on_body_entered)
|
||||
area.body_exited.connect(on_body_exited)
|
||||
offset_rectangle = sprite.region_rect
|
||||
|
||||
func on_body_entered(_body: Node2D) -> void:
|
||||
bodies += 1
|
||||
calc_state_activated()
|
||||
|
||||
func on_body_exited(_body: Node2D) -> void:
|
||||
bodies -= 1
|
||||
calc_state_activated()
|
||||
|
||||
func calc_state_activated() -> void:
|
||||
if bodies > 0 and !is_active:
|
||||
is_active = true
|
||||
sprite.region_rect.position.x = offset_rectangle.position.x - 32
|
||||
activated.emit()
|
||||
play_audio(audio_activate)
|
||||
elif bodies <= 0 and is_active:
|
||||
is_active = false
|
||||
sprite.region_rect.position.x = offset_rectangle.position.x
|
||||
deactivated.emit()
|
||||
play_audio(audio_deactivate)
|
||||
|
||||
func play_audio(stream: AudioStream) -> void:
|
||||
audio.stream = stream
|
||||
audio.play()
|
||||
1
interactables/dungeon/scripts/pressure_plate.gd.uid
Normal file
1
interactables/dungeon/scripts/pressure_plate.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://67xa7gwbduma
|
||||
18
interactables/dungeon/scripts/pushable_statue.gd
Normal file
18
interactables/dungeon/scripts/pushable_statue.gd
Normal file
@@ -0,0 +1,18 @@
|
||||
class_name PushableStatute extends RigidBody2D
|
||||
|
||||
@onready var audio: AudioStreamPlayer2D = $AudioStreamPlayer2D
|
||||
|
||||
@export var push_speed := 30.0
|
||||
|
||||
var push_direction := Vector2.ZERO :
|
||||
set = set_push
|
||||
|
||||
func _physics_process(_delta: float) -> void:
|
||||
linear_velocity = push_direction * push_speed
|
||||
|
||||
func set_push(new_push_direction: Vector2) -> void:
|
||||
push_direction = new_push_direction
|
||||
if push_direction == Vector2.ZERO:
|
||||
audio.stop()
|
||||
else:
|
||||
audio.play()
|
||||
1
interactables/dungeon/scripts/pushable_statue.gd.uid
Normal file
1
interactables/dungeon/scripts/pushable_statue.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cg71or2vgu0u8
|
||||
Reference in New Issue
Block a user