rundumdiewelten/rund-um-die-welten/LevelSelectUtility/unlock-button.gd

61 lines
1.5 KiB
GDScript3
Raw Permalink Normal View History

2025-09-19 16:37:23 +02:00
extends Button
@export var threshold = 0
var unlocked = false
@export var skin = "default" #enterpise, x-wing
#find number of collectables
func _ready():
check_unlock()
update_icon()
update_text()
connect("pressed", Callable(self, "_on_pressed"))
func check_unlock():
var total = 0
for level in GlobalVariables.collectibles.keys():
for value in GlobalVariables.collectibles[level]:
total += value
if total >= threshold:
unlocked = true
disabled = false
else:
unlocked = false
disabled = true
func _on_pressed():
if unlocked:
Audioplayer.play_sound((load("res://sfx/button_clicks.wav") as AudioStream))
GlobalVariables.player_skin = skin
func update_icon():
match skin:
"default":
icon = load_scaled_icon("res://assets/rocket1.png")
"x-wing":
icon = load_scaled_icon("res://assets/x-wing1.png")
"enterprise":
icon = load_scaled_icon("res://assets/enterprise1.png")
"sputnik":
icon = load_scaled_icon("res://assets/sputnik.png")
"falcon":
icon = load_scaled_icon("res://assets/falcon1.png")
"battlecruiser":
icon = load_scaled_icon("res://assets/battlecruiser1.png")
_:
icon = null
func load_scaled_icon(path: String) -> Texture2D:
var icon_scale = 4
var img = load(path).get_image()
img.resize(img.get_width() * icon_scale, img.get_height() * icon_scale, Image.INTERPOLATE_NEAREST)
var tex = ImageTexture.create_from_image(img)
return tex
func update_text():
text = str(threshold)
if threshold < 9:
text = "0" + text
add_theme_font_size_override("font_size", 60)