From d405dfb1029e70ce44e740c084a4a03560b9e57e Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Mon, 30 May 2016 13:25:12 +0200 Subject: [PATCH] Can now toggle loadout and job preview equipment separately. --- .../client/preference_setup/_defines.dm | 3 + .../preference_setup/general/03_body.dm | 10 ++-- .../preference_setup/occupation/occupation.dm | 4 +- .../mob/new_player/preferences_setup.dm | 58 +++++++++++-------- polaris.dme | 1 + 5 files changed, 44 insertions(+), 32 deletions(-) create mode 100644 code/modules/client/preference_setup/_defines.dm diff --git a/code/modules/client/preference_setup/_defines.dm b/code/modules/client/preference_setup/_defines.dm new file mode 100644 index 0000000000..0c4dbb6004 --- /dev/null +++ b/code/modules/client/preference_setup/_defines.dm @@ -0,0 +1,3 @@ +#define EQUIP_PREVIEW_LOADOUT 1 +#define EQUIP_PREVIEW_JOB 2 +#define EQUIP_PREVIEW_ALL (EQUIP_PREVIEW_LOADOUT|EQUIP_PREVIEW_JOB) diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index f92f889de8..924574c7f0 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -1,7 +1,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-") /datum/preferences - var/dress_mob = TRUE + var/equip_preview_mob = EQUIP_PREVIEW_ALL /datum/category_item/player_setup_item/general/body name = "Body" @@ -226,8 +226,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O . += "Preview
" . += "
" - . += "
[pref.dress_mob ? "Hide equipment" : "Show equipment"]" - + . += "
[pref.equip_preview_mob & EQUIP_PREVIEW_LOADOUT ? "Hide loadout" : "Show loadout"]" + . += "
[pref.equip_preview_mob & EQUIP_PREVIEW_JOB ? "Hide job gear" : "Show job gear"]" . += "" . += "Hair
" @@ -578,8 +578,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.disabilities ^= disability_flag return TOPIC_REFRESH_UPDATE_PREVIEW - else if(href_list["toggle_clothing"]) - pref.dress_mob = !pref.dress_mob + else if(href_list["toggle_preview_value"]) + pref.equip_preview_mob ^= text2num(href_list["toggle_preview_value"]) return TOPIC_REFRESH_UPDATE_PREVIEW return ..() diff --git a/code/modules/client/preference_setup/occupation/occupation.dm b/code/modules/client/preference_setup/occupation/occupation.dm index b3704bfb0c..cfc3ff781a 100644 --- a/code/modules/client/preference_setup/occupation/occupation.dm +++ b/code/modules/client/preference_setup/occupation/occupation.dm @@ -160,10 +160,10 @@ var/choice = input("Choose an title for [job.title].", "Choose Title", pref.GetPlayerAltTitle(job)) as anything in choices|null if(choice && CanUseTopic(user)) SetPlayerAltTitle(job, choice) - return (pref.dress_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH) + return (pref.equip_preview_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH) else if(href_list["set_job"]) - if(SetJob(user, href_list["set_job"])) return (pref.dress_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH) + if(SetJob(user, href_list["set_job"])) return (pref.equip_preview_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH) return ..() diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 527ad8b70b..a10049a644 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -194,31 +194,31 @@ b_skin = blue /datum/preferences/proc/dress_preview_mob(var/mob/living/carbon/human/mannequin) - copy_to(mannequin) - if(!dress_mob) + var/update_icon = FALSE + copy_to(mannequin, TRUE) + + var/datum/job/previewJob + if(equip_preview_mob) + // Determine what job is marked as 'High' priority, and dress them up as such. + if(job_civilian_low & ASSISTANT) + previewJob = job_master.GetJob("Assistant") + else + for(var/datum/job/job in job_master.occupations) + var/job_flag + switch(job.department_flag) + if(CIVILIAN) + job_flag = job_civilian_high + if(MEDSCI) + job_flag = job_medsci_high + if(ENGSEC) + job_flag = job_engsec_high + if(job.flag == job_flag) + previewJob = job + break + else return - // Determine what job is marked as 'High' priority, and dress them up as such. - var/datum/job/previewJob - if(job_civilian_low & ASSISTANT) - previewJob = job_master.GetJob("Assistant") - else - for(var/datum/job/job in job_master.occupations) - var/job_flag - switch(job.department_flag) - if(CIVILIAN) - job_flag = job_civilian_high - if(MEDSCI) - job_flag = job_medsci_high - if(ENGSEC) - job_flag = job_engsec_high - if(job.flag == job_flag) - previewJob = job - break - - if(previewJob) - mannequin.job = previewJob.title - previewJob.equip_preview(mannequin, player_alt_titles[previewJob.title]) + if((equip_preview_mob & EQUIP_PREVIEW_LOADOUT) && !(previewJob && (equip_preview_mob & EQUIP_PREVIEW_JOB) && (previewJob.type == /datum/job/ai || previewJob.type == /datum/job/cyborg))) var/list/equipped_slots = list() //If more than one item takes the same slot only spawn the first for(var/thing in gear) var/datum/gear/G = gear_datums[thing] @@ -238,9 +238,17 @@ continue if(G.slot && !(G.slot in equipped_slots)) - equipped_slots += G.slot var/metadata = gear[G.display_name] - mannequin.equip_to_slot_or_del(G.spawn_item(mannequin, metadata), G.slot) + if(mannequin.equip_to_slot_or_del(G.spawn_item(mannequin, metadata), G.slot)) + equipped_slots += G.slot + update_icon = TRUE + + if((equip_preview_mob & EQUIP_PREVIEW_JOB) && previewJob) + mannequin.job = previewJob.title + previewJob.equip_preview(mannequin, player_alt_titles[previewJob.title]) + update_icon = TRUE + + if(update_icon) mannequin.update_icons() /datum/preferences/proc/update_preview_icon() diff --git a/polaris.dme b/polaris.dme index 23e2ded9e6..9714a26d5c 100644 --- a/polaris.dme +++ b/polaris.dme @@ -1117,6 +1117,7 @@ #include "code\modules\client\preferences_spawnpoints.dm" #include "code\modules\client\preferences_toggle_procs.dm" #include "code\modules\client\ui_style.dm" +#include "code\modules\client\preference_setup\_defines.dm" #include "code\modules\client\preference_setup\preference_setup.dm" #include "code\modules\client\preference_setup\antagonism\01_basic.dm" #include "code\modules\client\preference_setup\antagonism\02_candidacy.dm"