91 lines
2.4 KiB
GDScript
91 lines
2.4 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(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
|