mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-14 11:42:27 +00:00
* tgui Preferences Menu + total rewrite of the preferences backend * nah, we dont need to ping those people * trying to remove the funny stuff * unmodularizing this * prefs reset * this may need to be reverted, who knows * okay, this part * perhaps * EEEEEEEEE * unsanitary * E * Stage 1 + loadout system * more fixes * E * I mean, it launches? * More fixes and reorganisation * E * customisation code is spaget. * disable ERP prefs * Update erp_preferences.dm * Update erp_preferences.dm * E * Slowly getting there * It may be time for help :) * tri...colors... help * preferences now pass preferences * Update dna.dm * Fuck this man * missing savefile return, set_species works, removed dumb stuff from updateappearance * https://github.com/Skyrat-SS13/Skyrat-tg/pull/8199 * https://github.com/Skyrat-SS13/Skyrat-tg/pull/8224 * https://github.com/tgstation/tgstation/pull/61519 * https://github.com/Skyrat-SS13/Skyrat-tg/pull/8278 * e * le butonAZARAK HELLO * hhh * Proper recognition where it's due, MrMelbert! * EEEE * examine block * Better gen hit sounds from whitedream * final loadout touches, more bug fixes im sure to come * i said there would be bugfixes * Update LoadoutManager.js * Missing preferences in the html menu * LIVE TESTING PHASE BABY * Update LoadoutManager.js * EEE * LAUNCH TEST FIRE * Update job.dm * Update new_player.dm * 50gb DAY ONE PATCH * EEE * Update preferences.dm * buggle fixes * Update examine.dm * >LOOC starts on Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com> Co-authored-by: Gandalf <jzo123@hotmail.com> Co-authored-by: Azarak <azarak10@gmail.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/randomize_character,
|
|
"set_random_preference" = .proc/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(src))
|
|
|
|
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)
|