101 lines
3.8 KiB
GDScript
101 lines
3.8 KiB
GDScript
extends Control
|
|
|
|
@onready var currency_label: Label = %CurrencyLabel
|
|
@onready var wood_label: Label = %WoodLabel
|
|
@onready var stock_label: Label = %StockLabel
|
|
|
|
@onready var modifiers_label: Label = %ModifiersLabel
|
|
|
|
func _ready():
|
|
populate_modifiers_display()
|
|
populate_unlock_buttons()
|
|
update_currency_label()
|
|
update_wood_label()
|
|
update_stock_label()
|
|
|
|
currency_label.add_theme_color_override("font_color", Global.money_color)
|
|
wood_label.add_theme_color_override("font_color", Global.wood_color)
|
|
stock_label.add_theme_color_override("font_color", Global.stock_color)
|
|
|
|
Inventory.currency_changed.connect(_on_currency_changed)
|
|
Inventory.currency_added.connect(spawn_currency_increase)
|
|
Inventory.wood_changed.connect(_on_currency_changed)
|
|
Inventory.wood_added.connect(spawn_wood_increase)
|
|
Inventory.stock_added.connect(spawn_stock_increase)
|
|
Inventory.stock_changed.connect(_on_currency_changed)
|
|
Unlocks.item_unlocked.connect(populate_unlock_buttons)
|
|
|
|
func update_currency_label():
|
|
currency_label.text = Global.currency_symbol + " " + str(int(Inventory.get_currency()))
|
|
|
|
func update_wood_label():
|
|
wood_label.text = "W: " + str(int(Inventory.get_wood()))
|
|
|
|
func update_stock_label():
|
|
stock_label.text = "S: " + str(int(Inventory.get_stock()))
|
|
|
|
func spawn_currency_increase(value, _total):
|
|
spawn_inventory_change_value(value, _total, "+", Global.currency_symbol, Global.money_color)
|
|
|
|
func spawn_wood_increase(value, _total):
|
|
spawn_inventory_change_value(value, _total, "+", "", Global.wood_color)
|
|
|
|
func spawn_stock_increase(value, _total):
|
|
spawn_inventory_change_value(value, _total, "+", "", Global.stock_color)
|
|
|
|
func spawn_inventory_change_value(value, _total, display_sign: String = "+", symbol: String = "", label_color: Color = Color.WHITE):
|
|
var float_label = Label.new()
|
|
float_label.text = display_sign + symbol + str(int(abs(value)))
|
|
float_label.add_theme_font_size_override("font_size", 16)
|
|
float_label.modulate = label_color
|
|
|
|
# Add random offset around center
|
|
var random_x = randf_range(-60, 30)
|
|
var random_y = randf_range(-40, 20)
|
|
float_label.position = Vector2(random_x, random_y)
|
|
add_child(float_label)
|
|
|
|
# Animate the label
|
|
var tween = create_tween()
|
|
tween.set_parallel(true) # Run both animations simultaneously
|
|
# Move up
|
|
tween.tween_property(float_label, "position:y", float_label.position.y - 50, 1.0)
|
|
# Fade out
|
|
tween.tween_property(float_label, "modulate:a", 0.0, 1.0)
|
|
# Remove from scene when done
|
|
tween.chain().tween_callback(float_label.queue_free)
|
|
|
|
|
|
func populate_unlock_buttons():
|
|
var unlocks_container = $UnlockContainer
|
|
for child in unlocks_container.get_children():
|
|
child.free()
|
|
|
|
for unlock_data in Unlocks.unlocks.unlocks:
|
|
var unlock_button_scene = load("res://scenes/button.tscn")
|
|
var unlock_button = unlock_button_scene.instantiate()
|
|
unlocks_container.add_child(unlock_button)
|
|
unlock_button.setup(unlock_data)
|
|
|
|
func populate_modifiers_display():
|
|
var modifiers_text = ""
|
|
|
|
modifiers_text = modifiers_text + "Sale Price: " + Global.currency_symbol + str(Unlocks.get_sale_price_per_item()) + "\n"
|
|
modifiers_text = modifiers_text + "Items Produced Per Tick: " + str(Unlocks.get_items_produced_per_tick()) + "\n"
|
|
modifiers_text = modifiers_text + "Wood per Click: " + str(Unlocks.get_wood_per_click()) + "\n\n"
|
|
modifiers_text = modifiers_text + "Demand: " + str(int(Unlocks.get_sale_demand())) + "\n\n"
|
|
|
|
modifiers_text = modifiers_text + "Current Modifiers:\n"
|
|
for key in Unlocks.current_modifiers.keys():
|
|
var display_name = key.replace("_modifier", "").replace("_", " ").capitalize()
|
|
var percentage = int((Unlocks.current_modifiers[key] - 1.0) * 100)
|
|
modifiers_text += "%s: %s%%\n" % [display_name, str(percentage)]
|
|
|
|
modifiers_label.text = modifiers_text
|
|
|
|
|
|
func _on_currency_changed(_value):
|
|
populate_modifiers_display()
|
|
update_currency_label()
|
|
update_wood_label()
|
|
update_stock_label()
|