cave-of-dreams/scripts/game.gd

92 lines
2.4 KiB
GDScript3
Raw Normal View History

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(2, 3)) + ".tscn").instantiate()
var entry = {
"item": procgen_item,
"enemies": []
}
procgen_item.rotation.y = 0.7
add_child(procgen_item)
if procgen_map.size() != 0:
var last_end = procgen_map[procgen_map.size() - 1].item.get_node("ProceduralEnd")
procgen_item.rotation = last_end.global_rotation
var start_offset = procgen_item.get_node("ProceduralStart").global_position - procgen_item.global_position
procgen_item.global_position = last_end.global_position - start_offset
procgen_map.push_back(entry)
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)
if procgen_item.has_node("CameraZones"):
for n in procgen_item.get_node("CameraZones").get_children():
var pos = n.global_position
var rot = n.global_rotation
procgen_item.get_node("CameraZones").remove_child(n)
$CameraZones.add_child(n)
n.global_position = pos
n.global_rotation = rot
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