This commit is contained in:
2026-03-13 22:00:02 -05:00
parent 90241d6830
commit 6738e8d217
676 changed files with 15819 additions and 78 deletions

View File

@@ -0,0 +1,12 @@
extends StaticBody2D
class_name BaseChest
@export var is_open := false
# Public Methods
func Open() -> void:
is_open = true
func OpenAlreadyOpened() -> void:
pass

View File

@@ -0,0 +1 @@
uid://0fsmtp1umvmp

View File

@@ -0,0 +1,4 @@
extends BaseChest
class_name BaseItemChest
@export var item_id: Enums.Items

View File

@@ -0,0 +1 @@
uid://dbuc0f87m24xf

View File

@@ -0,0 +1,31 @@
extends BaseItemChest
@onready var chest_01_sprite: AnimatedSprite2D = $"Sprite"
@export var is_locked := false
@export var locked_message_dialogue_trigger: DialogueTrigger
@export var already_opened_message_dialogue_trigger: DialogueTrigger
# Public Methods
func Open() -> void:
if is_locked:
if locked_message_dialogue_trigger:
locked_message_dialogue_trigger.Trigger()
return
super.Open()
chest_01_sprite.play("opening")
var item_name: String = Enums.Items.keys()[item_id]
print(item_name)
func OpenAlreadyOpened() -> void:
if already_opened_message_dialogue_trigger:
already_opened_message_dialogue_trigger.Trigger()
# Private Methods
func _ready() -> void:
if is_open:
chest_01_sprite.play("opened")

View File

@@ -0,0 +1 @@
uid://bvq13h8uyx572

View File

@@ -0,0 +1,2 @@
extends StaticBody2D
class_name WoodenBench

View File

@@ -0,0 +1 @@
uid://c6n652dy18xbm

View File

@@ -0,0 +1,10 @@
extends Area2D
class_name DialogueTrigger
signal DialogueTriggered(dialogue_name: String)
@export var dialogue_name: String
# Public Methods
func Trigger() -> void:
DialogueTriggered.emit(dialogue_name)

View File

@@ -0,0 +1 @@
uid://cfsfx0sahh5t7

View File

@@ -0,0 +1,17 @@
extends StaticBody2D
@onready var sprite: AnimatedSprite2D = $AnimatedSprite2D
@onready var collision_shape_2d: CollisionShape2D = $CollisionShape2D
var is_open := false
func OpenGate() -> void:
if is_open:
return
is_open = true
sprite.play("opening")
await sprite.animation_finished
collision_shape_2d.set_deferred("disabled", true)
sprite.play("open")

View File

@@ -0,0 +1 @@
uid://8erg53skow38

View File

@@ -0,0 +1,11 @@
extends Area2D
class_name CollisionLoadingZone
@export var loading_zone_transporter: LoadingZoneTransporter
# Private Methods
func _on_body_entered(body: Node2D) -> void:
if body is not PlayerCharacter:
return
loading_zone_transporter.Activate()

View File

@@ -0,0 +1 @@
uid://g0r5waf50gp5

View File

@@ -0,0 +1,8 @@
extends Area2D
class_name InteractiveLoadingZone
@export var loading_zone_transporter: LoadingZoneTransporter
# Public Methods
func Activate() -> void:
loading_zone_transporter.Activate()

View File

@@ -0,0 +1 @@
uid://dla7fe0nsbdvv

View File

@@ -0,0 +1,18 @@
extends Node
class_name LoadingZoneTransporter
signal MapTransitionQueued(map_id: Enums.MapIds, marker_name: String)
@export var destination_map_id: Enums.MapIds
@export var destination_marker_name: String
var _packed_scene: PackedScene
# Public Methods
func Activate() -> void:
MapTransitionQueued.emit(destination_map_id, destination_marker_name)
# Private Methods
func _ready() -> void:
_packed_scene = MapLoader.GetMap(destination_map_id)

View File

@@ -0,0 +1 @@
uid://cshtpe5n2iubh

View File

@@ -0,0 +1,15 @@
extends Area2D
signal PressurePlateTripped
@onready var animated_sprite_2d: AnimatedSprite2D = $AnimatedSprite2D
var activated := false
func _on_body_entered(body: Node2D) -> void:
if activated:
return
activated = true
animated_sprite_2d.play("activated")
PressurePlateTripped.emit()

View File

@@ -0,0 +1 @@
uid://cxt7ht66jiac8

View File

@@ -0,0 +1,15 @@
extends Area2D
@export var to_alpha := 0.38
@export var fade_out_duration := 0.2
@export var fade_in_duration := 0.2
@export var nodes_to_occlude: Array[Node2D]
func _on_area_entered(_area: Area2D) -> void:
for node in nodes_to_occlude:
get_tree().create_tween().tween_property(node, "self_modulate:a", to_alpha, fade_out_duration)
func _on_area_exited(_area: Area2D) -> void:
for node in nodes_to_occlude:
get_tree().create_tween().tween_property(node, "self_modulate:a", 1.0, fade_in_duration)

View File

@@ -0,0 +1 @@
uid://d4g6s63d0bh4o

View File

@@ -0,0 +1,78 @@
extends Node2D
@export var leaf_texture: Texture2D
@export var spawn_markers: Node2D
@export var destination_markers: Node2D
var _spawn_markers: Array[Marker2D] = []
var _destination_markers: Array[Marker2D] = []
var _spawn_schedule := 0.0
var _spawn_timer := 0.0
# Private Methods
func _ready() -> void:
for child in spawn_markers.get_children():
_spawn_markers.append(child)
for child in destination_markers.get_children():
_destination_markers.append(child)
_set_random_spawn_schedule()
# At spawn, we might want to spawn some leaves sooner...
_spawn_schedule -= randf_range(0.0, 15.0)
_spawn_schedule = max(0, _spawn_schedule)
print("%s - Leaf Spawn Schedule: %f" % [get_parent().name, _spawn_schedule])
# Debug
_spawn_schedule = randf_range(1.0, 3.0)
func _process(delta: float) -> void:
_spawn_timer += delta
if _spawn_timer >= _spawn_schedule:
_spawn_timer = 0.0
_set_random_spawn_schedule()
var spawn := _get_random_spawn_point()
var destination := _get_random_destination_point()
# TODO Refactor this into scene
var sprite := Sprite2D.new()
sprite.texture = leaf_texture
sprite.position = spawn
sprite.rotate(deg_to_rad(randf_range(0, 360)))
var tween := get_tree().create_tween().tween_property(sprite, "position", destination, randf_range(2.0, 3.0))
tween.finished.connect(
func():
var timer := get_tree().create_timer(randf_range(8.0, 15.0))
timer.timeout.connect(
func():
if !sprite: return
var tween2 := get_tree().create_tween().tween_property(sprite, "self_modulate:a", 0.0, randf_range(4.0, 6.0))
tween2.finished.connect(
func():
if !sprite: return
sprite.queue_free()
)
)
)
add_child(sprite)
func _set_random_spawn_schedule() -> void:
_spawn_schedule = randf_range(20.0, 60.0)
func _get_random_spawn_point() -> Vector2:
var idx := randi_range(0, len(_spawn_markers) - 1)
var marker := _spawn_markers[idx]
return marker.position
func _get_random_destination_point() -> Vector2:
var idx := randi_range(0, len(_destination_markers) - 1)
var marker := _destination_markers[idx]
var offset := Vector2(randf_range(-5.0, 5.0), randf_range(-5.0, 5.0))
return marker.position + offset

View File

@@ -0,0 +1 @@
uid://vmyfl4obus88

View File

@@ -0,0 +1,17 @@
extends CharacterBody2D
class_name BaseProjectile
@export var direction: Vector2
@export var speed := 100
# Public Methods
func SetProjectileStartAndDirection(start_position: Vector2, projectile_direction: Vector2) -> void:
position = start_position
direction = projectile_direction
rotation = projectile_direction.angle()
# Private Methods
func _physics_process(delta: float) -> void:
velocity = direction * speed * delta
move_and_slide()

View File

@@ -0,0 +1 @@
uid://8q26ldhfyijx

View File

@@ -0,0 +1,29 @@
extends BaseProjectile
class_name WoodenArrow
@onready var animation_player: AnimationPlayer = $AnimationPlayer
var _despawn_queued := false
# Private Methods
func _ready() -> void:
speed = 8000
func _on_collision_detector_area_entered(_area: Area2D) -> void:
queue_despawn()
func _on_collision_detector_body_entered(body: Node2D) -> void:
if body == self: return
queue_despawn()
func queue_despawn() -> void:
if _despawn_queued: return
_despawn_queued = true
animation_player.play("shaking")
await animation_player.animation_finished
queue_free()

View File

@@ -0,0 +1 @@
uid://j5yj4piyfql1

View File

@@ -0,0 +1,8 @@
extends Area2D
signal TargetHit
func _on_body_entered(body: Node2D) -> void:
if body is not CharacterBody2D:
return
TargetHit.emit()

View File

@@ -0,0 +1 @@
uid://6jls1eokv2to