mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Merge pull request #7521 from Kyep/job_priority_system
Ports Job Priority System
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
@@ -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])")
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user