Add persistent light and dark themes

This commit is contained in:
hz
2026-07-14 13:39:42 -05:00
parent 04694e4932
commit abbe6cf9f8
8 changed files with 315 additions and 26 deletions
+40
View File
@@ -0,0 +1,40 @@
extends SceneTree
const Style := preload("res://scripts/ui/ui_style.gd")
var failures := 0
func _initialize() -> void:
Style.set_dark_mode(true)
var root := Control.new()
var background := ColorRect.new()
background.color = Style.BACKGROUND
root.add_child(background)
var panel := PanelContainer.new()
panel.add_theme_stylebox_override("panel", Style.panel_box(Color("172337"), Color("405475")))
root.add_child(panel)
Style.set_dark_mode(false)
Style.refresh_tree(root, true)
_assert(background.color.is_equal_approx(Style.BACKGROUND), "background should switch to light mode")
_assert(root.theme.get_color("default_color", "RichTextLabel").is_equal_approx(Style.TEXT), "rich text should use the light text color")
var light_box := panel.get_theme_stylebox("panel") as StyleBoxFlat
_assert(light_box.bg_color.is_equal_approx(Color("fffffe")), "custom panel surface should switch to light mode")
Style.set_dark_mode(true)
Style.refresh_tree(root, false)
_assert(background.color.is_equal_approx(Style.BACKGROUND), "background should switch back to dark mode")
_assert(root.theme.get_color("default_color", "RichTextLabel").is_equal_approx(Style.TEXT), "rich text should use the dark text color")
var dark_box := panel.get_theme_stylebox("panel") as StyleBoxFlat
_assert(dark_box.bg_color.is_equal_approx(Color("172337")), "custom panel surface should switch back to dark mode")
root.free()
quit(1 if failures > 0 else 0)
func _assert(condition: bool, message: String) -> void:
if condition:
return
failures += 1
push_error(message)