ThemeSelect.gd 969 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. extends Control
  2. var current_theme := "Overworld"
  3. const THEME_ICONS_DAY = preload("uid://cw5c58yiaeh4j")
  4. const THEME_ICONS_NIGHT = preload("uid://bds7ota87jglw")
  5. signal level_theme_changed
  6. func _ready() -> void:
  7. update()
  8. grab_themes()
  9. func grab_themes() -> void:
  10. for i in %ThemeContainer.get_children():
  11. i.get_node("Button").pressed.connect(theme_selected.bind(i.name))
  12. func open() -> void:
  13. update()
  14. show()
  15. func close() -> void:
  16. hide()
  17. func update() -> void:
  18. for i in %ThemeContainer.get_children():
  19. i.get_node("Checkbox").visible = current_theme == i.name
  20. i.texture = [THEME_ICONS_DAY, THEME_ICONS_NIGHT][["Day", "Night"].find(Global.theme_time)]
  21. func theme_selected(theme_name := "") -> void:
  22. current_theme = theme_name
  23. Global.level_theme = current_theme
  24. Global.current_level.theme = current_theme
  25. level_theme_changed.emit()
  26. ResourceSetterNew.cache.clear()
  27. ResourceSetter.cache.clear()
  28. Global.level_theme_changed.emit()
  29. update()
  30. close()