More UI stuff, fancy number display (needs work)
This commit is contained in:
@@ -8,6 +8,7 @@ var scene_registry: Array = [
|
||||
{ "name": "Battle Test", "path": "res://scenes/views/battle_view.tscn" },
|
||||
{ "name": "Main Menu", "path": "res://scenes/views/main_menu_view.tscn" },
|
||||
{ "name": "Dialogue Test", "path": "res://scenes/dialogue_scene.tscn" },
|
||||
{ "name": "Test Scene", "path": "res://scenes/test_scene.tscn" },
|
||||
]
|
||||
|
||||
var commands: Array[ConsoleCommand] = []
|
||||
|
||||
44
scripts/ui/stylized_number_display.gd
Normal file
44
scripts/ui/stylized_number_display.gd
Normal file
@@ -0,0 +1,44 @@
|
||||
class_name StylizedNumberDisplay extends Control
|
||||
|
||||
@export var sprite_sheet: AtlasTexture
|
||||
@export var number_sprite_width: int
|
||||
@export var number_sprite_height: int
|
||||
@export var value: int = 0:
|
||||
set(v):
|
||||
value = v
|
||||
if is_node_ready():
|
||||
_refresh()
|
||||
|
||||
@onready var _container: HBoxContainer = %HBoxContainer
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
_refresh()
|
||||
|
||||
|
||||
func _get_minimum_size() -> Vector2:
|
||||
var digit_count := str(absi(value)).length()
|
||||
var spacing: int = _container.get_theme_constant("separation") if is_node_ready() else 0
|
||||
var total_width: int = digit_count * number_sprite_width + maxi(digit_count - 1, 0) * spacing
|
||||
return Vector2(total_width, number_sprite_height)
|
||||
|
||||
|
||||
func _refresh() -> void:
|
||||
for child in _container.get_children():
|
||||
child.queue_free()
|
||||
|
||||
var digits := str(absi(value))
|
||||
for i in digits.length():
|
||||
var digit := digits[i].to_int()
|
||||
var atlas_tex := AtlasTexture.new()
|
||||
atlas_tex.atlas = sprite_sheet.atlas
|
||||
atlas_tex.region = Rect2(
|
||||
sprite_sheet.region.position.x + digit * number_sprite_width,
|
||||
sprite_sheet.region.position.y,
|
||||
number_sprite_width,
|
||||
number_sprite_height,
|
||||
)
|
||||
var tex_rect := TextureRect.new()
|
||||
tex_rect.texture = atlas_tex
|
||||
_container.add_child(tex_rect)
|
||||
update_minimum_size()
|
||||
1
scripts/ui/stylized_number_display.gd.uid
Normal file
1
scripts/ui/stylized_number_display.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://biud4ob4h0rrs
|
||||
Reference in New Issue
Block a user