Files
TheTree_mock/scripts/ui/visual_theme_profile.gd
T

91 lines
3.0 KiB
GDScript

class_name VisualThemeProfile
extends Resource
## Replaceable visual-only configuration. Gameplay code must not branch on
## this resource, so changing art never changes simulation or save data.
@export_group("Pixel Art")
@export var pixel_dungeon_tiles: Texture2D
@export var pixel_town_tiles: Texture2D
@export_group("World Art")
@export var front_world_background: Texture2D
@export var back_world_background: Texture2D
@export_range(0.0, 1.0, 0.01) var world_art_opacity := 0.94
@export_range(0.0, 1.0, 0.01) var grid_overlay_opacity := 0.24
@export_group("Interface Icons")
@export var facility_icons: Dictionary = {}
@export var navigation_icons: Dictionary = {}
@export var resource_icons: Dictionary = {}
@export var control_icons: Dictionary = {}
@export var guest_actor_markers: Dictionary = {}
@export var staff_actor_markers: Dictionary = {}
@export_group("Interface Skins")
@export var ui_skin_textures: Dictionary = {}
@export_group("Interface Palette")
@export var window_background := Color("24170f")
@export var dark_panel := Color("6b3e1d")
@export var dark_panel_alt := Color("513018")
@export var light_panel := Color("f4e3bd")
@export var border_gold := Color("d5a552")
@export var button_normal := Color("75451f")
@export var button_hover := Color("8d5628")
@export var button_pressed := Color("496528")
@export var button_disabled := Color("574334")
@export var text_light := Color("fff0c8")
@export var text_dark := Color("55371e")
@export var success := Color("4f8a45")
@export var warning := Color("d39a2d")
@export var danger := Color("c84632")
func world_background_for_layer(layer: int) -> Texture2D:
return front_world_background if layer == 0 else back_world_background
func facility_icon(definition_id: StringName) -> Texture2D:
return _icon_from(facility_icons, definition_id)
func navigation_icon(mode: StringName) -> Texture2D:
return _icon_from(navigation_icons, mode)
func resource_icon(resource_name: StringName) -> Texture2D:
return _icon_from(resource_icons, resource_name)
func control_icon(control_name: StringName) -> Texture2D:
return _icon_from(control_icons, control_name)
func guest_actor_marker(guest_type_id: StringName) -> Texture2D:
var direct := _icon_from(guest_actor_markers, guest_type_id)
if direct != null:
return direct
var type_text := String(guest_type_id)
for raw_key: Variant in guest_actor_markers:
var class_id := String(raw_key)
if class_id == "default":
continue
if type_text == class_id or type_text.begins_with(class_id + "_"):
return guest_actor_markers[raw_key] as Texture2D
return _icon_from(guest_actor_markers, &"default")
func staff_actor_marker(role_id: StringName) -> Texture2D:
var marker := _icon_from(staff_actor_markers, role_id)
return marker if marker != null else _icon_from(staff_actor_markers, &"default")
func ui_skin(skin_id: StringName) -> Texture2D:
return _icon_from(ui_skin_textures, skin_id)
func _icon_from(collection: Dictionary, key: StringName) -> Texture2D:
var value: Variant = collection.get(key, collection.get(String(key), null))
return value as Texture2D