Merge pull request #7521 from Kyep/job_priority_system

Ports Job Priority System
This commit is contained in:
Fox McCloud
2017-06-16 16:42:28 -04:00
committed by GitHub
4 changed files with 53 additions and 3 deletions
+2
View File
@@ -10,11 +10,13 @@ var/global/datum/controller/occupations/job_master
var/list/occupations = list()
var/list/name_occupations = list() //Dict of all jobs, keys are titles
var/list/type_occupations = list() //Dict of all jobs, keys are types
var/list/prioritized_jobs = list() // List of jobs set to priority by HoP/Captain
//Players who need jobs
var/list/unassigned = list()
//Debug info
var/list/job_debug = list()
/datum/controller/occupations/proc/SetupOccupations(var/list/faction = list("Station"))
occupations = list()
+34 -2
View File
@@ -86,7 +86,9 @@ var/time_last_changed_position = 0
"current_positions" = job.current_positions,
"total_positions" = job.total_positions,
"can_open" = can_open_job(job),
"can_close" = can_close_job(job))))
"can_close" = can_close_job(job),
"can_prioritize" = can_prioritize_job(job)
)))
return formatted
@@ -165,6 +167,18 @@ var/time_last_changed_position = 0
return -1
return 0
/obj/machinery/computer/card/proc/can_prioritize_job(datum/job/job)
if(job)
if(!job_blacklisted(job) && job_in_department(job, FALSE))
if(job in job_master.prioritized_jobs)
return 2
else
if(job_master.prioritized_jobs.len >= 3)
return 0
return 1
return -1
/obj/machinery/computer/card/proc/job_in_department(datum/job/targetjob, includecivs = 1)
if(!scan || !scan.access)
return 0
@@ -488,7 +502,25 @@ var/time_last_changed_position = 0
opened_positions[edit_job_target]--
log_game("[key_name(usr)] has closed a job slot for job \"[j]\".")
nanomanager.update_uis(src)
if("prioritize_job")
// TOGGLE WHETHER JOB APPEARS AS PRIORITIZED IN THE LOBBY
if(is_authenticated(usr) && !target_dept)
var/priority_target = href_list["job"]
var/datum/job/j = job_master.GetJob(priority_target)
if(!j)
return 0
if(!job_in_department(j))
return 0
var/priority = TRUE
if(j in job_master.prioritized_jobs)
job_master.prioritized_jobs -= j
priority = FALSE
else if(job_master.prioritized_jobs.len < 3)
job_master.prioritized_jobs += j
else
return 0
log_game("[key_name(usr)] [priority ? "prioritized" : "unprioritized"] the job \"[j.title]\".")
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
if(modify)
modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])")
+16 -1
View File
@@ -362,6 +362,18 @@
else if(shuttle_master.emergency.mode >= SHUTTLE_CALL)
dat += "<font color='red'>The station is currently undergoing evacuation procedures.</font><br>"
if(length(job_master.prioritized_jobs))
dat += "<font color='lime'>The station has flagged these jobs as high priority: "
var/amt = length(job_master.prioritized_jobs)
var/amt_count
for(var/datum/job/a in job_master.prioritized_jobs)
amt_count++
if(amt_count != amt)
dat += " [a.title], "
else
dat += " [a.title]. </font><br>"
dat += "Choose from the following open positions:<br><br>"
var/list/activePlayers = list()
@@ -410,7 +422,10 @@
dat += "<fieldset style='border: 2px solid [color]; display: inline'>"
dat += "<legend align='center' style='color: [color]'>[jobcat]</legend>"
for(var/datum/job/job in categorizedJobs[jobcat]["jobs"])
dat += "<a href='byond://?src=[UID()];SelectedJob=[job.title]'>[job.title] ([job.current_positions]) (Active: [activePlayers[job]])</a><br>"
if(job in job_master.prioritized_jobs)
dat += "<a href='byond://?src=[UID()];SelectedJob=[job.title]'><font color='lime'><B>[job.title] ([job.current_positions]) (Active: [activePlayers[job]])</B></font></a><br>"
else
dat += "<a href='byond://?src=[UID()];SelectedJob=[job.title]'>[job.title] ([job.current_positions]) (Active: [activePlayers[job]])</a><br>"
dat += "</fieldset><br>"
dat += "</td></tr></table></center>"
@@ -41,6 +41,7 @@
<span class="average" style="font-weight: bold;">{{:value.title}}: {{:value.current_positions}}/{{:value.total_positions}}</span>
{{:helper.link('-', null, {'choice' : 'make_job_unavailable', 'job' : value.title}, value.can_close == 1 && data.authenticated ? null : 'disabled')}}
{{:helper.link('+', null, {'choice' : 'make_job_available', 'job' : value.title}, value.can_open == 1 && data.authenticated ? null : 'disabled')}}
{{:helper.link('*', null, {'choice' : 'prioritize_job', 'job' : value.title}, value.can_prioritize > 0 && data.authenticated ? null : 'disabled')}} {{if value.can_prioritize == 2}}<span class='warning'>Priority Job</span> {{/if}}
</div>
{{/for}}
</div>