mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-14 09:35:30 +01:00
3ea7b03369
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
67 lines
2.6 KiB
Plaintext
67 lines
2.6 KiB
Plaintext
/datum/preference_middleware/personality
|
|
action_delegations = list(
|
|
"handle_personality" = PROC_REF(handle_personality),
|
|
"clear_personalities" = PROC_REF(clear_personalities),
|
|
)
|
|
|
|
/datum/preference_middleware/personality/proc/handle_personality(list/params, mob/user)
|
|
var/datum/personality/personality_type = text2path(params["personality_type"])
|
|
if(!ispath(personality_type, /datum/personality))
|
|
return FALSE
|
|
|
|
var/personality_key = initial(personality_type.savefile_key)
|
|
var/list/personalities = preferences.read_preference(/datum/preference/personality)
|
|
if(personality_key in personalities)
|
|
LAZYREMOVE(personalities, personality_key)
|
|
else
|
|
if(LAZYLEN(personalities) >= CONFIG_GET(number/max_personalities))
|
|
return TRUE
|
|
if(SSpersonalities.is_incompatible(personalities, personality_type))
|
|
return TRUE
|
|
LAZYADD(personalities, personality_key)
|
|
preferences.update_preference(GLOB.preference_entries[/datum/preference/personality], personalities)
|
|
return TRUE
|
|
|
|
/datum/preference_middleware/personality/proc/clear_personalities(list/params, mob/user)
|
|
preferences.update_preference(GLOB.preference_entries[/datum/preference/personality], null)
|
|
return TRUE
|
|
|
|
/datum/preference_middleware/personality/get_constant_data()
|
|
var/list/data = list()
|
|
|
|
data["personalities"] = list()
|
|
for(var/datum/personality/personality_type as anything in SSpersonalities.personalities_by_type)
|
|
var/datum/personality/personality = SSpersonalities.personalities_by_type[personality_type]
|
|
data["personalities"] += list(list(
|
|
"description" = personality.desc,
|
|
"pos_gameplay_description" = personality.pos_gameplay_desc,
|
|
"neg_gameplay_description" = personality.neg_gameplay_desc,
|
|
"neut_gameplay_description" = personality.neut_gameplay_desc,
|
|
"name" = personality.name,
|
|
"path" = personality_type,
|
|
"groups" = personality.groups,
|
|
))
|
|
|
|
data["personality_incompatibilities"] = SSpersonalities.incompatibilities_by_group
|
|
|
|
return data
|
|
|
|
/datum/preference_middleware/personality/get_ui_static_data(mob/user)
|
|
var/list/data = list()
|
|
|
|
var/max = CONFIG_GET(number/max_personalities)
|
|
data["max_personalities"] = max >= length(SSpersonalities.personalities_by_type) ? -1 : max
|
|
data["mood_enabled"] = !CONFIG_GET(flag/disable_human_mood)
|
|
|
|
return data
|
|
|
|
/datum/preference_middleware/personality/get_ui_data(mob/user)
|
|
var/list/data = list()
|
|
|
|
data["selected_personalities"] = list()
|
|
for(var/personality_key in preferences.read_preference(/datum/preference/personality))
|
|
var/datum/personality/personality = SSpersonalities.personalities_by_key[personality_key]
|
|
data["selected_personalities"] += personality.type
|
|
|
|
return data
|