cave-of-dreams/scripts/game.gd
2026-05-19 22:18:33 -04:00

74 lines
1.9 KiB
GDScript

extends Node3D
var update_timer = 0.1
@onready var player = $Player
var procgen_map = []
func _procgen_add_next() -> void:
var procgen_item = load("res://scenes/procgens/test1/item_" + str(randi_range(3, 3)) + ".tscn").instantiate()
var entry = {
"item": procgen_item,
"enemies": []
}
if procgen_map.size() != 0:
procgen_item.global_position = procgen_map[procgen_map.size() - 1].item.get_node("ProceduralEnd").global_position - procgen_item.get_node("ProceduralStart").position
procgen_map.push_back(entry)
add_child(procgen_item)
entry.has_aggro_zone = procgen_item.has_node("AggroZone")
if entry.has_aggro_zone:
procgen_item.get_node("AggroZone").body_entered.connect(func (body): if body == player: for n in entry.enemies: n.awake = true )
if procgen_item.has_node("Spawns"):
for n in procgen_item.get_node("Spawns").get_children():
var enemy = Global.enemies[n.spawn_enemy].instantiate()
enemy.awake = false
add_child(enemy)
enemy.global_position = n.global_position
entry.enemies.push_back(enemy)
func _ready() -> void:
_procgen_add_next()
_procgen_add_next()
_procgen_add_next()
_procgen_add_next()
_procgen_add_next()
_procgen_add_next()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
update_timer -= delta
if update_timer <= 0:
update_timer = 0.1
$UI/Hotbar/Bars/Health/Bar.value = player.health
var item_buttons = $UI/Hotbar/Items.get_children()
var i = 0
for n in player.slots:
if item_buttons.size() <= i:
var button = preload("res://scenes/ui/item_button.tscn").instantiate()
button.weapon = player.slots[i]
button.player = player
$UI/Hotbar/Items.add_child(button)
button.started = true
elif item_buttons[i].weapon != player.slots[i]:
item_buttons[i].weapon = player.slots[i]
i += 1