From 5f52e411a981399cc6dc19ca7abc20af4b5d590b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Barou=C5=A1?= Date: Fri, 23 Oct 2020 15:24:38 +0200 Subject: [PATCH] Makes crew manifest pop-up use a single proc, makes it prettier (#10275) --- .../hud/screen_object_types/ai_screen_objs.dm | 4 +- code/controllers/subsystems/records.dm | 54 +++++++++++++------ .../admin_secrets/show_crew_manifest.dm | 6 +-- .../mob/abstract/new_player/new_player.dm | 7 +-- .../modules/mob/abstract/observer/observer.dm | 9 +--- code/modules/mob/living/silicon/ai/ai.dm | 3 +- .../modules/mob/living/silicon/robot/robot.dm | 5 +- code/modules/mob/living/silicon/silicon.dm | 9 ---- .../file_system/programs/command/card.dm | 8 +-- html/changelogs/amunak-crewmanifest.yml | 4 ++ 10 files changed, 56 insertions(+), 53 deletions(-) create mode 100755 html/changelogs/amunak-crewmanifest.yml diff --git a/code/_onclick/hud/screen_object_types/ai_screen_objs.dm b/code/_onclick/hud/screen_object_types/ai_screen_objs.dm index e2fe1eaad14..f9030324cf2 100644 --- a/code/_onclick/hud/screen_object_types/ai_screen_objs.dm +++ b/code/_onclick/hud/screen_object_types/ai_screen_objs.dm @@ -87,8 +87,8 @@ /obj/screen/ai/crew_manifest/Click() if (isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.show_station_manifest() + var/windowname = open_crew_manifest(usr) + onclose(usr, windowname) /obj/screen/ai/alerts name = "Show Alerts" diff --git a/code/controllers/subsystems/records.dm b/code/controllers/subsystems/records.dm index 19ba7c77e6c..ec99bf2a4f9 100644 --- a/code/controllers/subsystems/records.dm +++ b/code/controllers/subsystems/records.dm @@ -10,6 +10,7 @@ var/list/warrants var/list/viruses + var/list/nameMap var/list/excluded_fields var/list/localized_fields @@ -37,6 +38,7 @@ excluded_fields = list() localized_fields = list() manifest = list() + nameMap = list("heads" = "Heads", "sec" = "Security", "eng" = "Engineering", "med" = "Medical", "sci" = "Science", "car" = "Cargo", "civ" = "Civilian", "misc" = "Miscellaneous", "bot" = "Equipment") NEW_SS_GLOBAL(SSrecords) var/datum/D = new() for(var/v in D.vars) @@ -179,21 +181,31 @@ /datum/controller/subsystem/records/proc/reset_manifest() manifest.Cut() -/datum/controller/subsystem/records/proc/get_manifest(var/monochrome = 0, var/OOC = 0) - if(!manifest.len) - get_manifest_json() +// The one and only method for showing a pop-up crew manifest (browser) window +/proc/open_crew_manifest(var/mob/user, var/OOC = FALSE) + if(!user) + return + var/const/windowname = "manifest" + var/dat = {"

Crew Manifest

"} + dat += SSrecords.get_manifest(OOC) + send_theme_resources(user) + user << browse(enable_ui_theme(user, dat), "window=[windowname];size=450x600") + return windowname + +/datum/controller/subsystem/records/proc/get_manifest(var/OOC = FALSE) + var/const/style = {" + .manifest {border-collapse: collapse; width: 100%} + .manifest td, th {border: 1px solid #DEF; background-color: white; color:black; padding: .25em} + .manifest th {height: 2em; background-color: #3F668F; color: white} + .manifest tr.head th {background-color: #006E7A;} + .manifest td:first-child {text-align: right} + .manifest tr.alt td {background-color: #DEF} + "} var/dat = {" - - - - "} + +
NameRankActivity
+ + "} var/even = 0 var/list/isactive = new() for(var/mob/M in player_list) @@ -205,7 +217,7 @@ else isactive[M.real_name] = 0 - var/nameMap = list("heads" = "Heads", "sec" = "Security", "eng" = "Engineering", "med" = "Medical", "sci" = "Science", "car" = "Cargo", "civ" = "Civilian", "misc" = "Miscellaneous", "bot" = "Equipment") + var/manifest = get_manifest_list() for(var/dep in manifest) var/list/depI = manifest[dep] if(depI.len > 0) @@ -218,6 +230,18 @@ dat = replacetext(dat, "\t", "") return dat +/datum/controller/subsystem/records/proc/get_manifest_text() + var/dat = "

Crew Manifest

as of [worlddate2text()] [worldtime2text()]" + var/manifest = get_manifest_list() + for(var/dep in manifest) + var/list/depI = manifest[dep] + if(depI.len > 0) + var/depDat + for(var/list/item in depI) + depDat += "
  • [item["name"]] - [item["rank"]] ([item["active"]])
  • " + dat += "

    [nameMap[dep]]

    " + return dat + /datum/controller/subsystem/records/proc/get_manifest_list() if(manifest.len) return manifest diff --git a/code/modules/admin/secrets/admin_secrets/show_crew_manifest.dm b/code/modules/admin/secrets/admin_secrets/show_crew_manifest.dm index 28a1d958810..e10c55ab52f 100644 --- a/code/modules/admin/secrets/admin_secrets/show_crew_manifest.dm +++ b/code/modules/admin/secrets/admin_secrets/show_crew_manifest.dm @@ -5,8 +5,4 @@ . = ..() if(!.) return - var/dat - dat += "

    Crew Manifest

    " - dat += SSrecords.get_manifest() - - user << browse(dat, "window=manifest;size=370x420;can_close=1") + open_crew_manifest(user) diff --git a/code/modules/mob/abstract/new_player/new_player.dm b/code/modules/mob/abstract/new_player/new_player.dm index 687b5095d56..3bcd3683306 100644 --- a/code/modules/mob/abstract/new_player/new_player.dm +++ b/code/modules/mob/abstract/new_player/new_player.dm @@ -406,12 +406,7 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player) return new_character /mob/abstract/new_player/proc/ViewManifest() - var/dat = "" - dat += "

    Show Crew Manifest

    " - dat += SSrecords.get_manifest(OOC = 1) - - send_theme_resources(src) - src << browse(enable_ui_theme(src, dat), "window=manifest;size=370x420;can_close=1") + open_crew_manifest(src, OOC = TRUE) /mob/abstract/new_player/Move() return 0 diff --git a/code/modules/mob/abstract/observer/observer.dm b/code/modules/mob/abstract/observer/observer.dm index bed08652bb0..af380291233 100644 --- a/code/modules/mob/abstract/observer/observer.dm +++ b/code/modules/mob/abstract/observer/observer.dm @@ -582,15 +582,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp else return bestvent -/mob/abstract/observer/verb/view_manfiest() +/mob/abstract/observer/verb/view_manifest() set name = "Show Crew Manifest" set category = "Ghost" - - var/dat - dat += "

    Crew Manifest

    " - dat += SSrecords.get_manifest(OOC = 1) - - src << browse(dat, "window=manifest;size=370x420;can_close=1") + open_crew_manifest(src, OOC = TRUE) //This is called when a ghost is drag clicked to something. /mob/abstract/observer/MouseDrop(atom/over) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 8631e35c93c..1883321a306 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -379,7 +379,8 @@ var/list/ai_verbs_default = list( /mob/living/silicon/ai/proc/ai_roster() set category = "AI Commands" set name = "Show Crew Manifest" - show_station_manifest() + var/windowname = open_crew_manifest(src) + onclose(src, windowname) //AI Examine code /mob/living/silicon/ai/proc/ai_examine(atom/A as mob|obj|turf in view(src.eyeobj)) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 85a87ed21b4..2f26f195809 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -412,7 +412,8 @@ /mob/living/silicon/robot/verb/cmd_station_manifest() set category = "Robot Commands" set name = "Show Crew Manifest" - show_station_manifest() + var/windowname = open_crew_manifest(src) + onclose(src, windowname) /mob/living/silicon/robot/proc/self_diagnosis() if(!is_component_functioning("diagnosis unit")) @@ -1246,4 +1247,4 @@ to_chat(user, SPAN_WARNING("You fail to hack into \the [src].")) to_chat(src, SPAN_DANGER("Hack attempt detected and thwarted. Evacuate the area immediately.")) return SMOOTH_TRUE - return \ No newline at end of file + return diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 65c1514fdaa..3fe783f6f00 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -186,15 +186,6 @@ show_malf_ai() ..() -// this function displays the stations manifest in a separate window -/mob/living/silicon/proc/show_station_manifest() - var/dat - dat += "

    Crew Manifest

    " - dat += SSrecords.get_manifest(1) // make it monochrome - dat += "
    " - src << browse(dat, "window=airoster") - onclose(src, "airoster") - //can't inject synths /mob/living/silicon/can_inject(mob/user, error_msg) if(error_msg) diff --git a/code/modules/modular_computers/file_system/programs/command/card.dm b/code/modules/modular_computers/file_system/programs/command/card.dm index dbcfe2d8f2b..dec506f92bc 100644 --- a/code/modules/modular_computers/file_system/programs/command/card.dm +++ b/code/modules/modular_computers/file_system/programs/command/card.dm @@ -149,11 +149,7 @@ else computer.visible_message(SPAN_NOTICE("\The [computer] prints out paper.")) else - var/contents = {"

    Crew Manifest

    -
    - [SSrecords.get_manifest(1)] - "} - if(!computer.nano_printer.print_text(contents,text("crew manifest ([])", worldtime2text()))) + if(!computer.nano_printer.print_text(SSrecords.get_manifest_text(), text("crew manifest ([])", worldtime2text()))) to_chat(usr, SPAN_WARNING(">Hardware error: Printer was unable to print the file. It may be out of paper.")) return else @@ -239,4 +235,4 @@ id_card.access -= get_access_ids(ACCESS_TYPE_STATION|ACCESS_TYPE_CENTCOM) /datum/computer_file/program/card_mod/proc/apply_access(var/obj/item/card/id/id_card, var/list/accesses) - id_card.access |= accesses \ No newline at end of file + id_card.access |= accesses diff --git a/html/changelogs/amunak-crewmanifest.yml b/html/changelogs/amunak-crewmanifest.yml new file mode 100755 index 00000000000..067296771b0 --- /dev/null +++ b/html/changelogs/amunak-crewmanifest.yml @@ -0,0 +1,4 @@ +author: Amunak +delete-after: True +changes: + - tweak: "Unified crew manifest pop-ups, made them all look nicer. Changed printed manifest format a bit."
    NameRankActivity