gae_wild_jam/scripts/drop_manager.gd

40 lines
1008 B
GDScript

extends Node2D
@onready var player = get_node("/root/Game/Player")
@onready var bar = get_node("/root/Game/CanvasLayer/ProgressBar")
signal leveled_up
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
bar.max_value = player.max_xp
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func on_enemy_died(enemy):
call_deferred("drop_item", enemy)
var enemy_xp = enemy.xp
player.current_xp += enemy.xp
bar.value = player.current_xp
if player.current_xp >= player.max_xp:
leveled_up.emit()
player.max_xp = player.max_xp * 1.3
bar.max_value = player.max_xp
player.current_xp = 0
bar.value = 0
player.level += 1
func drop_item(enemy):
if not is_instance_valid(enemy):
return
for entry in enemy.drop_table:
if randf() < entry.chance:
var drop = entry.drop.instantiate()
drop.global_position = enemy.global_position
add_child(drop)