mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Co-authored-by: ShadowLarkens <shadowlarkens@gmail.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
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)
|