Convert preferences to /tg/ preferences (#16449)

* Convert all preferences to /tg/ preferences

* Move obfuscate key/job to game options

* Add abstract_type to each of the new subtypes

* Convert ignored players to tg prefs

* Yet another global category list removed

* Fix error, convert client FPS

* Convert UI_style, UI_alpha, and UI_color to tg prefs

* Clean up a little, convert tooltipstyle

* Convert ambience to tg prefs

* Remove chat_timestamp, tgchat can do this internally and gives localized results

* Convert admin ooc color to pref, merk 01_ui.dm

* Convert uplinklocation to a tg pref

* Fixup byond:// links

* Convert name_is_always_random

* Convert spawnpoint

* v16 savefile migration in prep for converting 03_body.dm

* Convert all colors to tg prefs

* Finish converting ooc notes
This commit is contained in:
ShadowLarkens
2025-01-05 13:39:18 +01:00
committed by GitHub
parent 55d0b57b76
commit b57023cd11
79 changed files with 1695 additions and 999 deletions
@@ -1,3 +1,44 @@
/// Assets generated from `/datum/preference` icons
/datum/asset/spritesheet/preferences
name = "preferences"
early = TRUE
/datum/asset/spritesheet/preferences/create_spritesheets()
var/list/to_insert = list()
for(var/preference_key in GLOB.preference_entries_by_key)
var/datum/preference/choiced/preference = GLOB.preference_entries_by_key[preference_key]
if(!istype(preference))
continue
if(!preference.should_generate_icons)
continue
for(var/preference_value in preference.get_choices())
var/create_icon_of = preference.icon_for(preference_value)
var/icon/icon
var/icon_state
if(ispath(create_icon_of, /atom))
var/atom/atom_icon_source = create_icon_of
icon = initial(atom_icon_source.icon)
icon_state = initial(atom_icon_source.icon_state)
else if(isicon(create_icon_of))
icon = create_icon_of
else
CRASH("[create_icon_of] is an invalid preference value (from [preference_key]:[preference_value]).")
to_insert[preference.get_spritesheet_key(preference.pref_serialize(preference_value))] = list(icon, icon_state)
for(var/spritesheet_key in to_insert)
var/list/inserting = to_insert[spritesheet_key]
Insert(spritesheet_key, inserting[1], inserting[2])
/// Returns the key that will be used in the spritesheet for a given value.
/datum/preference/proc/get_spritesheet_key(value)
return "[savefile_key]___[sanitize_css_class_name(value)]"
/// Sends information needed for shared details on individual preferences
/datum/asset/json/preferences
name = "preferences"