mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-20 23:31:04 +00:00
229 lines
7.3 KiB
Plaintext
229 lines
7.3 KiB
Plaintext
//This item is not completely unused- the central datacore datum uses it.
|
|
/*
|
|
* This item is completely unused, but removing it will break something in R&D and Radio code causing PDA and Ninja code to fail on compile
|
|
*/
|
|
|
|
/obj/effect/datacore
|
|
name = "datacore"
|
|
var/medical[] = list()
|
|
var/general[] = list()
|
|
var/security[] = list()
|
|
//This list tracks characters spawned in the world and cannot be modified in-game. Currently referenced by respawn_character().
|
|
var/locked[] = list()
|
|
|
|
|
|
/obj/effect/datacore/proc/get_manifest(monochrome, OOC)
|
|
var/list/heads = new()
|
|
var/list/sec = new()
|
|
var/list/eng = new()
|
|
var/list/med = new()
|
|
var/list/sci = new()
|
|
var/list/ser = new()
|
|
var/list/sup = new()
|
|
var/list/bot = new()
|
|
var/list/misc = new()
|
|
var/list/isactive = new()
|
|
var/dat = {"
|
|
<head><style>
|
|
.manifest {border-collapse:collapse;}
|
|
.manifest td, th {border:1px solid [monochrome?"black":"#DEF; background-color:white; color:black"]; padding:.25em}
|
|
.manifest th {height: 2em; [monochrome?"border-top-width: 3px":"background-color: #48C; color:white"]}
|
|
.manifest tr.head th { [monochrome?"border-top-width: 1px":"background-color: #488;"] }
|
|
.manifest td:first-child {text-align:right}
|
|
.manifest tr.alt td {[monochrome?"border-top-width: 2px":"background-color: #DEF"]}
|
|
</style></head>
|
|
<table class="manifest" width='350px'>
|
|
<tr class='head'><th>Name</th><th>Rank</th><th>Activity</th></tr>
|
|
"}
|
|
var/even = 0
|
|
// sort mobs
|
|
for(var/datum/data/record/t in data_core.general)
|
|
var/name = t.fields["name"]
|
|
var/rank = t.fields["rank"]
|
|
var/real_rank = t.fields["real_rank"]
|
|
if(OOC)
|
|
var/active = 0
|
|
for(var/mob/M in player_list)
|
|
if(M.real_name == name && M.client && M.client.inactivity <= 10 * 60 * 10)
|
|
active = 1
|
|
break
|
|
isactive[name] = active ? "Active" : "Inactive"
|
|
else
|
|
isactive[name] = t.fields["p_stat"]
|
|
// to_chat(world, "[name]: [rank]")
|
|
//cael - to prevent multiple appearances of a player/job combination, add a continue after each line
|
|
var/department = 0
|
|
if(real_rank in command_positions)
|
|
heads[name] = rank
|
|
department = 1
|
|
if(real_rank in security_positions)
|
|
sec[name] = rank
|
|
department = 1
|
|
if(real_rank in engineering_positions)
|
|
eng[name] = rank
|
|
department = 1
|
|
if(real_rank in medical_positions)
|
|
med[name] = rank
|
|
department = 1
|
|
if(real_rank in science_positions)
|
|
sci[name] = rank
|
|
department = 1
|
|
if(real_rank in service_positions)
|
|
ser[name] = rank
|
|
department = 1
|
|
if(real_rank in supply_positions)
|
|
sup[name] = rank
|
|
department = 1
|
|
if(real_rank in nonhuman_positions)
|
|
bot[name] = rank
|
|
department = 1
|
|
if(!department && !(name in heads))
|
|
misc[name] = rank
|
|
if(heads.len > 0)
|
|
dat += "<tr><th colspan=3>Heads</th></tr>"
|
|
for(name in heads)
|
|
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[heads[name]]</td><td>[isactive[name]]</td></tr>"
|
|
even = !even
|
|
if(sec.len > 0)
|
|
dat += "<tr><th colspan=3>Security</th></tr>"
|
|
for(name in sec)
|
|
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sec[name]]</td><td>[isactive[name]]</td></tr>"
|
|
even = !even
|
|
if(eng.len > 0)
|
|
dat += "<tr><th colspan=3>Engineering</th></tr>"
|
|
for(name in eng)
|
|
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[eng[name]]</td><td>[isactive[name]]</td></tr>"
|
|
even = !even
|
|
if(med.len > 0)
|
|
dat += "<tr><th colspan=3>Medical</th></tr>"
|
|
for(name in med)
|
|
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[med[name]]</td><td>[isactive[name]]</td></tr>"
|
|
even = !even
|
|
if(sci.len > 0)
|
|
dat += "<tr><th colspan=3>Science</th></tr>"
|
|
for(name in sci)
|
|
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sci[name]]</td><td>[isactive[name]]</td></tr>"
|
|
even = !even
|
|
if(ser.len > 0)
|
|
dat += "<tr><th colspan=3>Service</th></tr>"
|
|
for(name in ser)
|
|
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[ser[name]]</td><td>[isactive[name]]</td></tr>"
|
|
even = !even
|
|
if(sup.len > 0)
|
|
dat += "<tr><th colspan=3>Supply</th></tr>"
|
|
for(name in sup)
|
|
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sup[name]]</td><td>[isactive[name]]</td></tr>"
|
|
even = !even
|
|
// in case somebody is insane and added them to the manifest, why not
|
|
if(bot.len > 0)
|
|
dat += "<tr><th colspan=3>Silicon</th></tr>"
|
|
for(name in bot)
|
|
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[bot[name]]</td><td>[isactive[name]]</td></tr>"
|
|
even = !even
|
|
// misc guys
|
|
if(misc.len > 0)
|
|
dat += "<tr><th colspan=3>Miscellaneous</th></tr>"
|
|
for(name in misc)
|
|
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[misc[name]]</td><td>[isactive[name]]</td></tr>"
|
|
even = !even
|
|
|
|
dat += "</table>"
|
|
dat = replacetext(dat, "\n", "") // so it can be placed on paper correctly
|
|
dat = replacetext(dat, "\t", "")
|
|
return dat
|
|
|
|
|
|
/*
|
|
We can't just insert in HTML into the nanoUI so we need the raw data to play with.
|
|
Instead of creating this list over and over when someone leaves their PDA open to the page
|
|
we'll only update it when it changes. The PDA_Manifest global list is zeroed out upon any change
|
|
using /obj/effect/datacore/proc/manifest_inject( ), or manifest_insert( )
|
|
*/
|
|
|
|
var/global/list/PDA_Manifest = list()
|
|
|
|
/obj/effect/datacore/proc/get_manifest_json()
|
|
if(PDA_Manifest.len)
|
|
return
|
|
var/heads[0]
|
|
var/sec[0]
|
|
var/eng[0]
|
|
var/med[0]
|
|
var/sci[0]
|
|
var/ser[0]
|
|
var/sup[0]
|
|
var/bot[0]
|
|
var/misc[0]
|
|
for(var/datum/data/record/t in data_core.general)
|
|
var/name = sanitize(t.fields["name"])
|
|
var/rank = sanitize(t.fields["rank"])
|
|
var/real_rank = t.fields["real_rank"]
|
|
|
|
var/isactive = t.fields["p_stat"]
|
|
var/department = 0
|
|
var/depthead = 0 // Department Heads will be placed at the top of their lists.
|
|
if(real_rank in command_positions)
|
|
heads[++heads.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
depthead = 1
|
|
if(rank == "Captain" && heads.len != 1)
|
|
heads.Swap(1, heads.len)
|
|
|
|
if(real_rank in security_positions)
|
|
sec[++sec.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
if(depthead && sec.len != 1)
|
|
sec.Swap(1, sec.len)
|
|
|
|
if(real_rank in engineering_positions)
|
|
eng[++eng.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
if(depthead && eng.len != 1)
|
|
eng.Swap(1, eng.len)
|
|
|
|
if(real_rank in medical_positions)
|
|
med[++med.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
if(depthead && med.len != 1)
|
|
med.Swap(1, med.len)
|
|
|
|
if(real_rank in science_positions)
|
|
sci[++sci.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
if(depthead && sci.len != 1)
|
|
sci.Swap(1, sci.len)
|
|
|
|
if(real_rank in service_positions)
|
|
ser[++ser.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
if(depthead && ser.len != 1)
|
|
ser.Swap(1, ser.len)
|
|
|
|
if(real_rank in supply_positions)
|
|
sup[++sup.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
if(depthead && sup.len != 1)
|
|
sup.Swap(1, sup.len)
|
|
|
|
if(real_rank in nonhuman_positions)
|
|
bot[++bot.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
|
|
if(!department && !(name in heads))
|
|
misc[++misc.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
|
|
|
|
PDA_Manifest = list(\
|
|
"heads" = heads,\
|
|
"sec" = sec,\
|
|
"eng" = eng,\
|
|
"med" = med,\
|
|
"sci" = sci,\
|
|
"ser" = ser,\
|
|
"sup" = sup,\
|
|
"bot" = bot,\
|
|
"misc" = misc\
|
|
)
|
|
return
|
|
|