This commit is contained in:
Andriy Yednarovych
2026-02-22 19:26:26 +01:00
parent fd1ff19c4c
commit e877c5f058
211 changed files with 9385 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
class_name EnemyCounter extends Node2D
signal enemies_defeated
func _ready() -> void:
child_exiting_tree.connect(on_enemy_destroyed)
pass
func on_enemy_destroyed(node: Node2D) -> void:
if node is Enemy and enemy_count() <= 1:
enemies_defeated.emit()
print("ENEMIES DEFEATED")
func enemy_count() -> int:
var count := 0
for child in get_children():
if child is Enemy:
count += 1
return count

View File

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

View File

@@ -0,0 +1,6 @@
[gd_scene format=3 uid="uid://s54xni3yvek5"]
[ext_resource type="Script" uid="uid://bxyv7orhs7xw2" path="res://general/enemy_counter/enemy_counter.gd" id="1_6ymjw"]
[node name="EnemyCounter" type="Node2D" unique_id=1225445185]
script = ExtResource("1_6ymjw")

13
general/hitbox/hitbox.gd Normal file
View File

@@ -0,0 +1,13 @@
class_name Hitbox extends Area2D
signal damaged(hurtbox: Hurtbox)
func _ready() -> void:
pass # Replace with function body.
func _process(_delta: float) -> void:
pass
func take_damage(hurtbox: Hurtbox) -> void:
damaged.emit(hurtbox)

View File

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

View File

@@ -0,0 +1,9 @@
[gd_scene format=3 uid="uid://cda6fr5vhb4ty"]
[ext_resource type="Script" uid="uid://cmdjqh873unve" path="res://general/hitbox/hitbox.gd" id="1_4tnmp"]
[node name="Hitbox" type="Area2D" unique_id=1876591880]
collision_layer = 256
collision_mask = 0
monitoring = false
script = ExtResource("1_4tnmp")

View File

@@ -0,0 +1,13 @@
class_name Hurtbox extends Area2D
@export var damage: int = 1
func _ready() -> void:
area_entered.connect(hurtbox_entered)
func _process(_delta: float) -> void:
pass
func hurtbox_entered(area: Area2D) -> void:
if area is Hitbox:
area.take_damage(self)

View File

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

View File

@@ -0,0 +1,9 @@
[gd_scene format=3 uid="uid://mwyvk4gke34"]
[ext_resource type="Script" uid="uid://c0fmav64y2rrk" path="res://general/hurtbox/hurtbox.gd" id="1_85hd5"]
[node name="Hurtbox" type="Area2D" unique_id=38213362]
collision_layer = 0
collision_mask = 2
monitorable = false
script = ExtResource("1_85hd5")

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://b7nup12qxtlh"
path="res://.godot/imported/dungeon_discovery.wav-41484ca4e230435a886c5306ceaade95.sample"
[deps]
source_file="res://general/item-dropper/dungeon_discovery.wav"
dest_files=["res://.godot/imported/dungeon_discovery.wav-41484ca4e230435a886c5306ceaade95.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@@ -0,0 +1,46 @@
@tool
class_name ItemDropper extends Node2D
const PICKUP = preload("res://items/item_pickup/item_pickup.tscn")
@export var item: ItemData : set = set_item_data
@onready var sprite: Sprite2D = $Sprite2D
@onready var dropped_data: PersistentDataHandler = $PersistentDataHandler
@onready var audio: AudioStreamPlayer = $AudioStreamPlayer
var dropped := false
func _ready() -> void:
if Engine.is_editor_hint():
update_texture()
return
sprite.visible = false
dropped_data.data_loaded.connect(on_data_loaded)
on_data_loaded()
func set_item_data(new_item: ItemData) -> void:
item = new_item
update_texture()
func update_texture() -> void:
if !Engine.is_editor_hint():
return
if item and sprite:
sprite.texture = item.texture
func on_data_loaded() -> void:
dropped = dropped_data.value
func drop_item() -> void:
if dropped:
return
dropped = true
var drop = PICKUP.instantiate() as ItemPickup
drop.item_data = item
add_child(drop)
drop.picked_up.connect(on_item_picked_up)
audio.play()
func on_item_picked_up() -> void:
dropped_data.set_value()

View File

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

View File

@@ -0,0 +1,26 @@
[gd_scene format=3 uid="uid://q756h6ku2kjn"]
[ext_resource type="Script" uid="uid://ce3vhcig6dc4p" path="res://general/item-dropper/item_dropper.gd" id="1_yo2da"]
[ext_resource type="Script" uid="uid://bej7822ail7o" path="res://general/persistent_data/persistent_data_handler.gd" id="2_syr8l"]
[ext_resource type="AudioStream" uid="uid://b7nup12qxtlh" path="res://general/item-dropper/dungeon_discovery.wav" id="2_u0i1k"]
[node name="ItemDropper" type="Node2D" unique_id=1807553228]
script = ExtResource("1_yo2da")
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1635927483]
[node name="Label" type="Label" parent="Sprite2D" unique_id=423753573]
offset_left = -40.0
offset_top = -24.0
offset_right = 43.0
offset_bottom = -1.0
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 6
text = "Item Drop "
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=855210117]
stream = ExtResource("2_u0i1k")
[node name="PersistentDataHandler" type="Node" parent="." unique_id=213983155]
script = ExtResource("2_syr8l")
metadata/_custom_type_script = "uid://bej7822ail7o"

View File

@@ -0,0 +1,18 @@
class_name PersistentDataHandler extends Node
signal data_loaded
var value := false
func _ready() -> void:
get_value()
func set_value() -> void:
SaveManager.add_persistent_value(get_data_name())
func get_value() -> void:
value = SaveManager.check_persistent_value(get_data_name())
data_loaded.emit()
func get_data_name() -> String:
return "%s/%s/%s" % [get_tree().current_scene.scene_file_path, get_parent().name, name]

View File

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

View File

@@ -0,0 +1,6 @@
[gd_scene format=3 uid="uid://dqwuowiyehr7d"]
[ext_resource type="Script" uid="uid://bej7822ail7o" path="res://general/persistent_data/persistent_data_handler.gd" id="1_72b1k"]
[node name="PersistentDataHandler" type="Node" unique_id=843808896]
script = ExtResource("1_72b1k")