Unit panel rewire
This commit is contained in:
47
scripts/ui/chip_bar.gd
Normal file
47
scripts/ui/chip_bar.gd
Normal file
@@ -0,0 +1,47 @@
|
||||
class_name ChipBar extends Control
|
||||
|
||||
# The value to represent in filled chips. In the future chips may be colored differently above certain thresholds to stop drawing too many
|
||||
@export var value: int:
|
||||
set(v):
|
||||
value = v
|
||||
if is_node_ready():
|
||||
_refresh()
|
||||
|
||||
# The total number of chips. If value is less than this, those chips should be empty.
|
||||
@export var max_value: int:
|
||||
set(v):
|
||||
max_value = v
|
||||
if is_node_ready():
|
||||
_refresh()
|
||||
|
||||
# Configures the size of the hflow based on the chip texture size.
|
||||
@export var max_chips_per_row: int
|
||||
|
||||
# The texture for an empty chip
|
||||
@export var empty_chip_texture: Texture2D
|
||||
|
||||
# The texture for a filled chip
|
||||
@export var filled_chip_texture: Texture2D
|
||||
|
||||
@onready var _container: HFlowContainer = $HFlowContainer
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
_refresh()
|
||||
|
||||
|
||||
func _refresh() -> void:
|
||||
for child in _container.get_children():
|
||||
child.queue_free()
|
||||
|
||||
if filled_chip_texture and max_chips_per_row > 0:
|
||||
var chip_width := filled_chip_texture.get_width()
|
||||
_container.custom_minimum_size.x = chip_width * max_chips_per_row
|
||||
|
||||
for i in max_value:
|
||||
var tex_rect := TextureRect.new()
|
||||
if i < value:
|
||||
tex_rect.texture = filled_chip_texture
|
||||
else:
|
||||
tex_rect.texture = empty_chip_texture
|
||||
_container.add_child(tex_rect)
|
||||
1
scripts/ui/chip_bar.gd.uid
Normal file
1
scripts/ui/chip_bar.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cvmmsm13nyr62
|
||||
Reference in New Issue
Block a user