From 8d061265a3efd2056d38ba124e7da667e1f561df Mon Sep 17 00:00:00 2001 From: khubajsn Date: Sun, 16 Jun 2013 10:44:17 +0200 Subject: [PATCH 1/9] checkpoint --- code/modules/client/preferences.dm | 71 +++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 2 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 156c338fdd4..eaff845554e 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -255,6 +255,7 @@ datum/preferences var/HTML = "
" HTML += "Choose occupation chances
" HTML += "
Done

" // Easier to press up here. + HTML += "" HTML += "
" // Table within a table for alignment, also allows you to easily add more colomns. HTML += "" var/index = -1 @@ -294,7 +295,7 @@ datum/preferences HTML += "
" - HTML += "" + HTML += "" if(rank == "Assistant")//Assistant is special if(job_civilian_low & ASSISTANT) @@ -357,6 +358,58 @@ datum/preferences SetChoices(user) return 1 + proc/RemoveJobFromPreferences(role) + var/datum/job/job = job_master.GetJob(role) + + if (!job) + return 0 + + if (job.department_flag == CIVILIAN) + job_civilian_low &= ~job.flag + job_civilian_med &= ~job.flag + job_civilian_high &= ~job.flag + return CIVILIAN + else if (job.department_flag == ENGSEC) + job_engsec_low &= ~job.flag + job_engsec_med &= ~job.flag + job_engsec_high &= ~job.flag + return ENGSEC + else if (job.department_flag == MEDSCI) + job_medsci_low &= ~job.flag + job_medsci_med &= ~job.flag + job_medsci_high &= ~job.flag + return MEDSCI + + return 0 + + proc/SetLowerJob(mob/user, role) + var/datum/job/job = job_master.GetJob(role) + if(!job) + user << browse(null, "window=mob_occupation") + ShowChoices(user) + return + + if(role == "Assistant") + if(job_civilian_low & job.flag) + job_civilian_low &= ~job.flag + else + job_civilian_low |= job.flag + SetChoices(user) + return 1 + + if(GetJobDepartment(job, 1) & job.flag) + SetJobPreferenceLevel(job, 2) + else if(GetJobDepartment(job, 2) & job.flag) + SetJobPreferenceLevel(job, 3) + else if(GetJobDepartment(job, 3) & job.flag) + SetJobPreferenceLevel(job, 4) + else + return 1 + + SetChoices(user) + return 1 + + proc/ResetJobs() job_civilian_high = 0 @@ -424,31 +477,43 @@ datum/preferences if(2) job_civilian_high = job.flag job_civilian_med &= ~job.flag + job_civilian_low &= ~job.flag if(3) job_civilian_med |= job.flag job_civilian_low &= ~job.flag + job_civilian_high &= ~job.flag else job_civilian_low |= job.flag + job_civilian_med &= ~job.flag + job_civilian_high &= ~job.flag if(MEDSCI) switch(level) if(2) job_medsci_high = job.flag job_medsci_med &= ~job.flag + job_medsci_low &= ~job.flag if(3) job_medsci_med |= job.flag job_medsci_low &= ~job.flag + job_medsci_high &= ~job.flag else job_medsci_low |= job.flag + job_medsci_high &= ~job.flag + job_medsci_med &= ~job.flag if(ENGSEC) switch(level) if(2) job_engsec_high = job.flag job_engsec_med &= ~job.flag + job_engsec_low &= ~job.flag if(3) job_engsec_med |= job.flag job_engsec_low &= ~job.flag + job_engsec_high &= ~job.flag else job_engsec_low |= job.flag + job_engsec_med &= ~job.flag + job_engsec_high &= ~job.flag return 1 @@ -469,6 +534,8 @@ datum/preferences SetChoices(user) if("input") SetJob(user, href_list["text"]) + if ("lowerInput") + SetLowerJob(user, href_list["text"]) else SetChoices(user) return 1 @@ -522,7 +589,7 @@ datum/preferences var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference") as null|color if(new_hair) h_color = sanitize_hexcolor(new_hair) - + if("h_style") var/new_h_style From f46766ca236a4fd55de10ab0a14720f4db1683f3 Mon Sep 17 00:00:00 2001 From: khubajsn Date: Sun, 16 Jun 2013 10:54:46 +0200 Subject: [PATCH 2/9] Finished writing SetJobPreferenceLevel, it appears that SetJobDepartment doesnt support direct level input --- code/modules/client/preferences.dm | 45 ++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index eaff845554e..d3db1adb248 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -358,27 +358,60 @@ datum/preferences SetChoices(user) return 1 - proc/RemoveJobFromPreferences(role) - var/datum/job/job = job_master.GetJob(role) - + proc/SetJobPreferenceLevel(var/datum/job/job, var/level) if (!job) return 0 + if (level == 1) // set all current high preferred to medium + job_civilian_med |= job_civilian_high + job_engsec_med |= job_engsec_high + job_medsci_med |= job_medsci_high + job_civilian_high = 0 + job_engsec_high = 0 + job_medsci_high = 0 + if (job.department_flag == CIVILIAN) job_civilian_low &= ~job.flag job_civilian_med &= ~job.flag job_civilian_high &= ~job.flag - return CIVILIAN + + switch(level) + if (1) + job_civilian_high |= job.flag + if (2) + job_civilian_med |= job.flag + if (3) + job_civilian_low |= job.flag + + return 1 else if (job.department_flag == ENGSEC) job_engsec_low &= ~job.flag job_engsec_med &= ~job.flag job_engsec_high &= ~job.flag - return ENGSEC + + switch(level) + if (1) + job_engsec_high |= job.flag + if (2) + job_engsec_med |= job.flag + if (3) + job_engsec_low |= job.flag + + return 1 else if (job.department_flag == MEDSCI) job_medsci_low &= ~job.flag job_medsci_med &= ~job.flag job_medsci_high &= ~job.flag - return MEDSCI + + switch(level) + if (1) + job_medsci_high |= job.flag + if (2) + job_medsci_med |= job.flag + if (3) + job_medsci_low |= job.flag + + return 1 return 0 From f7a7d4b28d8df7fd354d276cf39915979b660a8d Mon Sep 17 00:00:00 2001 From: khubajsn Date: Sun, 16 Jun 2013 11:02:38 +0200 Subject: [PATCH 3/9] Added GetJobLevel --- code/modules/client/preferences.dm | 117 ++++------------------------- 1 file changed, 16 insertions(+), 101 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index d3db1adb248..6562c5eafe9 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -330,34 +330,6 @@ datum/preferences popup.open(0) return - - proc/SetJob(mob/user, role) - var/datum/job/job = job_master.GetJob(role) - if(!job) - user << browse(null, "window=mob_occupation") - ShowChoices(user) - return - - if(role == "Assistant") - if(job_civilian_low & job.flag) - job_civilian_low &= ~job.flag - else - job_civilian_low |= job.flag - SetChoices(user) - return 1 - - if(GetJobDepartment(job, 1) & job.flag) - SetJobDepartment(job, 1) - else if(GetJobDepartment(job, 2) & job.flag) - SetJobDepartment(job, 2) - else if(GetJobDepartment(job, 3) & job.flag) - SetJobDepartment(job, 3) - else//job = Never - SetJobDepartment(job, 4) - - SetChoices(user) - return 1 - proc/SetJobPreferenceLevel(var/datum/job/job, var/level) if (!job) return 0 @@ -415,8 +387,21 @@ datum/preferences return 0 - proc/SetLowerJob(mob/user, role) + proc/GetJobLevel(var/datum/job/job) + if (!job || !level) return 0 + + if (job.flag & (job_civilian_high | job_engsec_high | job_medsci_high)) + return 1 + else if (job.flag & (job_civilian_med | job_engsec_med | job_medsci_med)) + return 2 + else if (job.flag & (job_civilian_low | job_engsec_low | job_medsci_low)) + return 3 + + return 0 + + proc/UpdateJobPreference(mob/user, role, upOrDown) var/datum/job/job = job_master.GetJob(role) + if(!job) user << browse(null, "window=mob_occupation") ShowChoices(user) @@ -430,16 +415,9 @@ datum/preferences SetChoices(user) return 1 - if(GetJobDepartment(job, 1) & job.flag) - SetJobPreferenceLevel(job, 2) - else if(GetJobDepartment(job, 2) & job.flag) - SetJobPreferenceLevel(job, 3) - else if(GetJobDepartment(job, 3) & job.flag) - SetJobPreferenceLevel(job, 4) - else - return 1 - + SetJobPreferenceLevel(job, GetJobLevel(job) + upOrDown) SetChoices(user) + return 1 @@ -487,69 +465,6 @@ datum/preferences return job_engsec_low return 0 - - proc/SetJobDepartment(var/datum/job/job, var/level) - if(!job || !level) return 0 - switch(level) - if(1)//Only one of these should ever be active at once so clear them all here - job_civilian_high = 0 - job_medsci_high = 0 - job_engsec_high = 0 - return 1 - if(2)//Set current highs to med, then reset them - job_civilian_med |= job_civilian_high - job_medsci_med |= job_medsci_high - job_engsec_med |= job_engsec_high - job_civilian_high = 0 - job_medsci_high = 0 - job_engsec_high = 0 - - switch(job.department_flag) - if(CIVILIAN) - switch(level) - if(2) - job_civilian_high = job.flag - job_civilian_med &= ~job.flag - job_civilian_low &= ~job.flag - if(3) - job_civilian_med |= job.flag - job_civilian_low &= ~job.flag - job_civilian_high &= ~job.flag - else - job_civilian_low |= job.flag - job_civilian_med &= ~job.flag - job_civilian_high &= ~job.flag - if(MEDSCI) - switch(level) - if(2) - job_medsci_high = job.flag - job_medsci_med &= ~job.flag - job_medsci_low &= ~job.flag - if(3) - job_medsci_med |= job.flag - job_medsci_low &= ~job.flag - job_medsci_high &= ~job.flag - else - job_medsci_low |= job.flag - job_medsci_high &= ~job.flag - job_medsci_med &= ~job.flag - if(ENGSEC) - switch(level) - if(2) - job_engsec_high = job.flag - job_engsec_med &= ~job.flag - job_engsec_low &= ~job.flag - if(3) - job_engsec_med |= job.flag - job_engsec_low &= ~job.flag - job_engsec_high &= ~job.flag - else - job_engsec_low |= job.flag - job_engsec_med &= ~job.flag - job_engsec_high &= ~job.flag - return 1 - - proc/process_link(mob/user, list/href_list) if(!user) return if(!istype(user, /mob/new_player)) return From ab91ac7e323c2717b402c1c5bf8a8d6670ce129a Mon Sep 17 00:00:00 2001 From: khubajsn Date: Sun, 16 Jun 2013 11:04:25 +0200 Subject: [PATCH 4/9] Updated link handling and link href-s --- code/modules/client/preferences.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 6562c5eafe9..6132c71fdf7 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -255,7 +255,7 @@ datum/preferences var/HTML = "
" HTML += "Choose occupation chances
" HTML += "
Done

" // Easier to press up here. - HTML += "" + HTML += "" HTML += "
" // Table within a table for alignment, also allows you to easily add more colomns. HTML += "" var/index = -1 @@ -295,7 +295,7 @@ datum/preferences HTML += "
" - HTML += "" + HTML += "" if(rank == "Assistant")//Assistant is special if(job_civilian_low & ASSISTANT) @@ -480,10 +480,10 @@ datum/preferences if("random") userandomjob = !userandomjob SetChoices(user) - if("input") - SetJob(user, href_list["text"]) - if ("lowerInput") - SetLowerJob(user, href_list["text"]) + if("increaseJobLevel") + UpdateJobPreference(user, href_list["text"], 1) + if ("decreaseJobLevel") + UpdateJobPreference(user, href_list["text"], -1) else SetChoices(user) return 1 From 8d44b018b14c1c27f11a822880ec6a819f0f74c0 Mon Sep 17 00:00:00 2001 From: khubajsn Date: Sun, 16 Jun 2013 11:06:17 +0200 Subject: [PATCH 5/9] Removed a check for removed argument --- code/modules/client/preferences.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 6132c71fdf7..968accfbeea 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -388,7 +388,7 @@ datum/preferences return 0 proc/GetJobLevel(var/datum/job/job) - if (!job || !level) return 0 + if (!job) return 0 if (job.flag & (job_civilian_high | job_engsec_high | job_medsci_high)) return 1 From b30cbd6462e2cdf9076325ef2639fd4c0ab553e1 Mon Sep 17 00:00:00 2001 From: khubajsn Date: Sun, 16 Jun 2013 11:12:13 +0200 Subject: [PATCH 6/9] Bad values --- code/modules/client/preferences.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 968accfbeea..0256387bd19 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -481,9 +481,9 @@ datum/preferences userandomjob = !userandomjob SetChoices(user) if("increaseJobLevel") - UpdateJobPreference(user, href_list["text"], 1) - if ("decreaseJobLevel") UpdateJobPreference(user, href_list["text"], -1) + if ("decreaseJobLevel") + UpdateJobPreference(user, href_list["text"], 1) else SetChoices(user) return 1 From b9d92abfe53d939e61dbee5a47259d76fa058c72 Mon Sep 17 00:00:00 2001 From: khubajsn Date: Sun, 16 Jun 2013 11:28:25 +0200 Subject: [PATCH 7/9] Edited the URL handling again to make more sense. --- code/modules/client/preferences.dm | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 0256387bd19..5166368b090 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -415,7 +415,21 @@ datum/preferences SetChoices(user) return 1 - SetJobPreferenceLevel(job, GetJobLevel(job) + upOrDown) + + var/targetLvl = GetJobLevel(job) + if (upOrDown == 1) // increasing from low to high, i.e. lowering the level value + if (targetLvl == 0) + targetLvl = 3 // low + else + targetLvl = targetLvl - 1 + else // decreasing from high to low, i.e. raising the level value + if (targetLvl == 3) + targetLvl = 0 + else + targetLvl = targetLvl + 1 + + + SetJobPreferenceLevel(job, targetLvl) SetChoices(user) return 1 @@ -481,9 +495,9 @@ datum/preferences userandomjob = !userandomjob SetChoices(user) if("increaseJobLevel") - UpdateJobPreference(user, href_list["text"], -1) - if ("decreaseJobLevel") UpdateJobPreference(user, href_list["text"], 1) + if ("decreaseJobLevel") + UpdateJobPreference(user, href_list["text"], -1) else SetChoices(user) return 1 From f23f60a6a2db991d853dbff827ebe660651dc45e Mon Sep 17 00:00:00 2001 From: khubajsn Date: Sun, 16 Jun 2013 21:08:29 +0200 Subject: [PATCH 8/9] Updated changelog. --- html/changelog.html | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/html/changelog.html b/html/changelog.html index c8e10be403e..1679a99c2d6 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -51,7 +51,16 @@ should be listed in the changelog upon commit tho. Thanks. --> - + + +
+

16 June 2013

+

Khub updated:

+
    +
  • Job preferences menu now not only allows you to left-click the level (i.e. [Medium]) to raise it, but also to right-click it to lower it. That means you don't have to cycle through all the levels to get rid of a [Low].
  • +
+
+