27 lines
1.0 KiB
GDScript
27 lines
1.0 KiB
GDScript
|
|
extends VBoxContainer
|
||
|
|
|
||
|
|
var trackers: Dictionary[ResourceController.ResourceType, ResourceTracker] = {}
|
||
|
|
var resource_tracker_scene: PackedScene = preload("res://ResourceTracker.tscn")
|
||
|
|
|
||
|
|
func _ready():
|
||
|
|
var header = Label.new()
|
||
|
|
header.text = "Resources"
|
||
|
|
add_child(header)
|
||
|
|
|
||
|
|
for resource in ResourceController.stock.keys():
|
||
|
|
add_resource_ui(resource)
|
||
|
|
ResourceController.resource_type_added.connect(add_resource_ui)
|
||
|
|
ResourceController.resource_stats_updated.connect(_update_resource)
|
||
|
|
|
||
|
|
func _update_resource(resource_type: ResourceController.ResourceType, stats: ResourceController.ResourceStats):
|
||
|
|
if !trackers.has(resource_type): add_resource_ui(resource_type)
|
||
|
|
var tracker = trackers[resource_type]
|
||
|
|
tracker.set_val_and_max(stats.value, stats.max)
|
||
|
|
tracker.set_increment(stats.delta)
|
||
|
|
|
||
|
|
func add_resource_ui(resource_type: ResourceController.ResourceType):
|
||
|
|
var tracker: ResourceTracker = resource_tracker_scene.instantiate()
|
||
|
|
add_child(tracker)
|
||
|
|
tracker.set_resource_name(ResourceController.get_resource_name(resource_type))
|
||
|
|
trackers[resource_type] = tracker
|