91 lines
3.0 KiB
GDScript
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
|