mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-02-04 13:20:15 +00:00
* 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
85 lines
2.7 KiB
Plaintext
85 lines
2.7 KiB
Plaintext
/// Middleware for handling randomization preferences
|
|
/datum/preference_middleware/random
|
|
action_delegations = list(
|
|
"randomize_character" = PROC_REF(randomize_character),
|
|
"set_random_preference" = PROC_REF(set_random_preference),
|
|
)
|
|
|
|
/datum/preference_middleware/random/get_character_preferences(mob/user)
|
|
return list(
|
|
"randomization" = preferences.randomise,
|
|
)
|
|
|
|
/datum/preference_middleware/random/get_constant_data()
|
|
var/list/randomizable = list()
|
|
|
|
for (var/preference_type in GLOB.preference_entries)
|
|
var/datum/preference/preference = GLOB.preference_entries[preference_type]
|
|
if (!preference.is_randomizable())
|
|
continue
|
|
|
|
randomizable += preference.savefile_key
|
|
|
|
return list(
|
|
"randomizable" = randomizable,
|
|
)
|
|
|
|
/datum/preference_middleware/random/proc/randomize_character()
|
|
for (var/datum/preference/preference as anything in get_preferences_in_priority_order())
|
|
if (preferences.should_randomize(preference))
|
|
preferences.write_preference(preference, preference.create_random_value(preferences))
|
|
|
|
// preferences.character_preview_view.update_body()
|
|
|
|
return TRUE
|
|
|
|
/datum/preference_middleware/random/proc/set_random_preference(list/params, mob/user)
|
|
var/requested_preference_key = params["preference"]
|
|
var/value = params["value"]
|
|
|
|
var/datum/preference/requested_preference = GLOB.preference_entries_by_key[requested_preference_key]
|
|
if (isnull(requested_preference))
|
|
return FALSE
|
|
|
|
if (!requested_preference.is_randomizable())
|
|
return FALSE
|
|
|
|
if (value == RANDOM_ANTAG_ONLY)
|
|
preferences.randomise[requested_preference_key] = RANDOM_ANTAG_ONLY
|
|
else if (value == RANDOM_ENABLED)
|
|
preferences.randomise[requested_preference_key] = RANDOM_ENABLED
|
|
else if (value == RANDOM_DISABLED)
|
|
preferences.randomise -= requested_preference_key
|
|
else
|
|
return FALSE
|
|
|
|
return TRUE
|
|
|
|
/// Returns if a preference should be randomized.
|
|
/datum/preferences/proc/should_randomize(datum/preference/preference, is_antag)
|
|
if (!preference.is_randomizable())
|
|
return FALSE
|
|
|
|
var/requested_randomization = randomise[preference.savefile_key]
|
|
|
|
//if (istype(preference, /datum/preference/name))
|
|
// requested_randomization = read_preference(/datum/preference/choiced/random_name)
|
|
|
|
switch (requested_randomization)
|
|
if (RANDOM_ENABLED)
|
|
return TRUE
|
|
if (RANDOM_ANTAG_ONLY)
|
|
return is_antag
|
|
else
|
|
return FALSE
|
|
|
|
/// Given randomization flags, will return whether or not this preference should be randomized.
|
|
/datum/preference/proc/included_in_randomization_flags(randomize_flags)
|
|
return TRUE
|
|
|
|
// /datum/preference/name/included_in_randomization_flags(randomize_flags)
|
|
// return !!(randomize_flags & RANDOMIZE_NAME)
|
|
|
|
// /datum/preference/choiced/species/included_in_randomization_flags(randomize_flags)
|
|
// return !!(randomize_flags & RANDOMIZE_SPECIES)
|