TextShadowColourChanger.gd 1.0 KB

123456789101112131415161718192021222324252627282930
  1. class_name TextShadowColourChanger
  2. extends Node
  3. @export var labels: Array[Label] = []
  4. @export var shadow_node: CanvasItem = null
  5. @export var override_shadow_colour := Color(0, 0, 0, 0)
  6. var text_shadow_colour = Color.BLACK
  7. static var global_text_shadow_color := Color.BLACK:
  8. set(value):
  9. global_text_shadow_color = value
  10. func _ready() -> void:
  11. Global.level_theme_changed.connect(handle_shadow_colours)
  12. Global.text_shadow_changed.connect(handle_shadow_colours)
  13. handle_shadow_colours()
  14. func handle_shadow_colours() -> void:
  15. text_shadow_colour = global_text_shadow_color
  16. if override_shadow_colour != Color(0, 0, 0, 0):
  17. text_shadow_colour = override_shadow_colour
  18. if Settings.file.visuals.text_shadows == 0:
  19. text_shadow_colour = Color(0, 0, 0, 0)
  20. for i in labels:
  21. if is_instance_valid(i):
  22. i.add_theme_color_override("font_shadow_color", text_shadow_colour)
  23. if shadow_node != null:
  24. shadow_node.modulate.a = (text_shadow_colour.a)
  25. if shadow_node.material != null:
  26. shadow_node.material.set_shader_parameter("shadow_colour", text_shadow_colour)