More UI stuff, fancy number display (needs work)

This commit is contained in:
gamer147
2026-04-09 12:03:31 -04:00
parent 664c9694de
commit 9b1d6e8c8f
10 changed files with 257 additions and 6 deletions

View File

@@ -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] = []

View 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()

View File

@@ -0,0 +1 @@
uid://biud4ob4h0rrs