extends Control @onready var resource_container: GridContainer = $ResourceContainer/MarginContainer/VBoxContainer/GridContainer const SCIFI_TILESHEET = preload("res://assets/scifi_tilesheet@2.png") var _resource_displays := {} func _ready() -> void: ResourceManager.changed_resource.connect(_on_resource_manager_changed_resource) func _on_resource_manager_changed_resource(changed: ResourceChangedSignal) -> void: for resource: GameResource in changed.changed_resources.keys(): if not _resource_displays.has(resource): var atlas_tex := AtlasTexture.new() atlas_tex.atlas = SCIFI_TILESHEET atlas_tex.region = Rect2(Grid.GRID_SIZE * resource.atlas_location.x, Grid.GRID_SIZE * resource.atlas_location.y, Grid.GRID_SIZE, Grid.GRID_SIZE) var img := TextureRect.new() img.texture = atlas_tex img.expand_mode = TextureRect.EXPAND_FIT_WIDTH_PROPORTIONAL resource_container.add_child(img) var label := Label.new() resource_container.add_child(label) var data := ResourceData.new() data.image = img data.label = label data.value = changed.changed_resources[resource] _resource_displays[resource] = data label.text = "%s / %s" % [data.value, ResourceManager.get_resource_limit(resource)] else: var data: ResourceData = _resource_displays[resource] data.value += changed.changed_resources[resource] data.label.text = "%s / %s" % [data.value, ResourceManager.get_resource_limit(resource)] class ResourceData: var image: TextureRect var label: Label var value: int