42 lines
1.5 KiB
GDScript
42 lines
1.5 KiB
GDScript
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, resource.storage_max]
|
|
else:
|
|
var data: ResourceData = _resource_displays[resource]
|
|
data.value += changed.changed_resources[resource]
|
|
data.label.text = "%s / %s" % [data.value, resource.storage_max]
|
|
|
|
class ResourceData:
|
|
var image: TextureRect
|
|
var label: Label
|
|
var value: int
|