From d9df0b6d0d8be8ede490d2bcda657bcd6c081525 Mon Sep 17 00:00:00 2001 From: Tastyfish Date: Fri, 18 Feb 2022 04:01:59 -0500 Subject: [PATCH] backlit newscaster, status display, request console. status display refactor to newer overlay system (#64858) --- .../game/machinery/computer/communications.dm | 6 +- code/game/machinery/newscaster.dm | 25 ++- code/game/machinery/requests_console.dm | 37 ++-- code/game/machinery/status_display.dm | 161 +++++++++++++----- icons/obj/terminals.dmi | Bin 19521 -> 17677 bytes 5 files changed, 162 insertions(+), 67 deletions(-) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 6acd3ed0e87..7f929d41fa5 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -141,6 +141,7 @@ /obj/machinery/computer/communications/ui_act(action, list/params) var/static/list/approved_states = list(STATE_BUYING_SHUTTLE, STATE_CHANGING_STATUS, STATE_MAIN, STATE_MESSAGES) var/static/list/approved_status_pictures = list("biohazard", "blank", "default", "lockdown", "redalert", "shuttle") + var/static/list/state_status_pictures = list("blank", "shuttle") . = ..() if (.) @@ -366,7 +367,10 @@ var/picture = params["picture"] if (!(picture in approved_status_pictures)) return - post_status("alert", picture) + if(picture in state_status_pictures) + post_status(picture) + else + post_status("alert", picture) playsound(src, "terminal_type", 50, FALSE) if ("toggleAuthentication") // Log out if we're logged in diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 035ccf038f1..dcc4c9def42 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -200,7 +200,7 @@ GLOBAL_LIST_EMPTY(allCasters) name = "newscaster" desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. All the news you absolutely have no use for, in one place!" icon = 'icons/obj/terminals.dmi' - icon_state = "newscaster_normal" + icon_state = "newscaster_off" base_icon_state = "newscaster" verb_say = "beeps" verb_ask = "beeps" @@ -243,18 +243,24 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster/security_unit, 30) picture = null return ..() -/obj/machinery/newscaster/update_icon_state() +/obj/machinery/newscaster/update_appearance(updates=ALL) + . = ..() if(machine_stat & (NOPOWER|BROKEN)) - icon_state = "[base_icon_state]_off" - return ..() - icon_state = "[base_icon_state]_[GLOB.news_network.wanted_issue.active ? "wanted" : "normal"]" - return ..() + set_light(0) + return + set_light(1.4,0.7,"#34D352") // green light /obj/machinery/newscaster/update_overlays() . = ..() - if(!(machine_stat & (NOPOWER|BROKEN)) && !GLOB.news_network.wanted_issue.active && alert) - . += "newscaster_alert" + if(!(machine_stat & (NOPOWER|BROKEN))) + var/state = "[base_icon_state]_[GLOB.news_network.wanted_issue.active ? "wanted" : "normal"]" + . += mutable_appearance(icon, state) + . += emissive_appearance(icon, state, alpha = src.alpha) + + if(!GLOB.news_network.wanted_issue.active && alert) + . += mutable_appearance(icon, "[base_icon_state]_alert") + . += emissive_appearance(icon, "[base_icon_state]_alert", alpha = src.alpha) var/hp_percent = atom_integrity * 100 /max_integrity switch(hp_percent) @@ -262,10 +268,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster/security_unit, 30) return if(50 to 75) . += "crack1" + . += emissive_blocker(icon, "crack1", alpha = src.alpha) if(25 to 50) . += "crack2" + . += emissive_blocker(icon, "crack2", alpha = src.alpha) else . += "crack3" + . += emissive_blocker(icon, "crack3", alpha = src.alpha) /obj/machinery/newscaster/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) . = ..() diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 9a54c48af21..8bf26da9124 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -28,7 +28,7 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments) name = "requests console" desc = "A console intended to send requests to different departments on the station." icon = 'icons/obj/terminals.dmi' - icon_state = "req_comp0" + icon_state = "req_comp_off" base_icon_state = "req_comp" var/department = "Unknown" //The list of all departments on the station (Determined from this variable on each unit) Set this to the same thing if you want several consoles in one department var/list/messages = list() //List of all messages @@ -81,23 +81,30 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/requests_console, 30) /obj/machinery/requests_console/update_icon_state() if(open) - icon_state="[base_icon_state]_[hackState ? "rewired" : "open"]" - return ..() - if(machine_stat & NOPOWER) - icon_state = "[base_icon_state]_off" + icon_state = "[base_icon_state]_[hackState ? "rewired" : "open"]" return ..() + icon_state = "[base_icon_state]_off" + return ..() + +/obj/machinery/requests_console/update_overlays() + . = ..() + + if(open || (machine_stat & NOPOWER)) + return + + var/screen_state if(emergency || (newmessagepriority == REQ_EXTREME_MESSAGE_PRIORITY)) - icon_state = "[base_icon_state]3" - return ..() - if(newmessagepriority == REQ_HIGH_MESSAGE_PRIORITY) - icon_state = "[base_icon_state]2" - return ..() - if(newmessagepriority == REQ_NORMAL_MESSAGE_PRIORITY) - icon_state = "[base_icon_state]1" - return ..() - icon_state = "[base_icon_state]0" - return ..() + screen_state = "[base_icon_state]3" + else if(newmessagepriority == REQ_HIGH_MESSAGE_PRIORITY) + screen_state = "[base_icon_state]2" + else if(newmessagepriority == REQ_NORMAL_MESSAGE_PRIORITY) + screen_state = "[base_icon_state]1" + else + screen_state = "[base_icon_state]0" + + . += mutable_appearance(icon, screen_state) + . += emissive_appearance(icon, screen_state, alpha = src.alpha) /obj/machinery/requests_console/Initialize(mapload) . = ..() diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 2fac2f44f88..f8154cde8cd 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -31,13 +31,17 @@ var/obj/effect/overlay/status_display_text/message1_overlay var/obj/effect/overlay/status_display_text/message2_overlay + var/current_picture = "" + var/current_mode = SD_BLANK + var/message1 = "" + var/message2 = "" /obj/item/wallframe/status_display name = "status display frame" desc = "Used to build status displays, just secure to the wall." icon_state = "unanchoredstatusdisplay" custom_materials = list(/datum/material/iron=14000, /datum/material/glass=8000) - result_path = /obj/machinery/status_display + result_path = /obj/machinery/status_display/evac pixel_shift = 32 /obj/machinery/status_display/wrench_act_secondary(mob/living/user, obj/item/tool) @@ -76,44 +80,100 @@ new /obj/item/wallframe/status_display(drop_location()) qdel(src) -/// Immediately blank the display. -/obj/machinery/status_display/proc/remove_display() - cut_overlays() - vis_contents.Cut() +/// Immediately change the display to the given picture. +/obj/machinery/status_display/proc/set_picture(state) + if(state != current_picture) + current_picture = state + + update_appearance() + +/// Immediately change the display to the given two lines. +/obj/machinery/status_display/proc/set_messages(line1, line2) + line1 = uppertext(line1) + line2 = uppertext(line2) + + if(line1 != message1) + message1 = line1 + + if(line2 != message2) + message2 = line2 + + update_appearance() + +/** + * Remove both message objs and null the fields. + * Don't call this in subclasses. + */ +/obj/machinery/status_display/proc/remove_messages() if(message1_overlay) QDEL_NULL(message1_overlay) if(message2_overlay) QDEL_NULL(message2_overlay) -/// Immediately change the display to the given picture. -/obj/machinery/status_display/proc/set_picture(state) - remove_display() - add_overlay(state) +/** + * Create/update message overlay. + * They must be handled as real objects for the animation to run. + * Don't call this in subclasses. + * Arguments: + * * overlay - the current /obj/effect/overlay/status_display_text instance + * * line_y - The Y offset to render the text. + * * message - the new message text. + * Returns new /obj/effect/overlay/status_display_text or null if unchanged. + */ +/obj/machinery/status_display/proc/update_message(obj/effect/overlay/status_display_text/overlay, line_y, message) + if(overlay && message == overlay.message) + return null -/// Immediately change the display to the given two lines. -/obj/machinery/status_display/proc/update_display(line1, line2) - line1 = uppertext(line1) - line2 = uppertext(line2) + if(overlay) + qdel(overlay) + return new/obj/effect/overlay/status_display_text(src, line_y, message) + +/obj/machinery/status_display/update_appearance(updates=ALL) + . = ..() if( \ - (message1_overlay && message1_overlay.message == line1) && \ - (message2_overlay && message2_overlay.message == line2) \ + (machine_stat & (NOPOWER|BROKEN)) || \ + (current_mode == SD_BLANK) || \ + (current_mode != SD_PICTURE && message1 == "" && message2 == "") \ ) + set_light(0) + return + set_light(1.4, 0.7, LIGHT_COLOR_BLUE) // blue light + +/obj/machinery/status_display/update_overlays() + . = ..() + + if(machine_stat & (NOPOWER|BROKEN)) + remove_messages() return - remove_display() + switch(current_mode) + if(SD_BLANK) + remove_messages() + // Turn off backlight. + return + if(SD_PICTURE) + remove_messages() + . += mutable_appearance(icon, current_picture) + else + var/overlay = update_message(message1_overlay, LINE1_Y, message1) + if(overlay) + message1_overlay = overlay + overlay = update_message(message2_overlay, LINE2_Y, message2) + if(overlay) + message2_overlay = overlay - message1_overlay = new(LINE1_Y, line1) - vis_contents += message1_overlay + // Turn off backlight if message is blank + if(message1 == "" && message2 == "") + return - message2_overlay = new(LINE2_Y, line2) - vis_contents += message2_overlay + . += emissive_appearance(icon, "outline", alpha = src.alpha) // Timed process - performs nothing in the base class /obj/machinery/status_display/process() if(machine_stat & NOPOWER) // No power, no processing. - remove_display() + update_appearance() return PROCESS_KILL @@ -130,6 +190,7 @@ . = ..() if(machine_stat & (NOPOWER|BROKEN) || . & EMP_PROTECT_SELF) return + current_mode = SD_PICTURE set_picture("ai_bsod") /obj/machinery/status_display/examine(mob/user) @@ -145,7 +206,7 @@ /obj/machinery/status_display/proc/display_shuttle_status(obj/docking_port/mobile/shuttle) if(!shuttle) // the shuttle is missing - no processing - update_display("shutl?","") + set_messages("shutl?","") return PROCESS_KILL else if(shuttle.timer) var/line1 = "-[shuttle.getModeStr()]-" @@ -153,10 +214,10 @@ if(length_char(line2) > CHARS_PER_LINE) line2 = "error" - update_display(line1, line2) + set_messages(line1, line2) else // don't kill processing, the timer might turn back on - remove_display() + set_messages("", "") /obj/machinery/status_display/proc/examine_shuttle(mob/user, obj/docking_port/mobile/shuttle) if (shuttle) @@ -177,11 +238,13 @@ icon = 'icons/obj/status_display.dmi' vis_flags = VIS_INHERIT_LAYER | VIS_INHERIT_PLANE | VIS_INHERIT_ID - var/message = "" + var/message + var/obj/sd_parent -/obj/effect/overlay/status_display_text/New(yoffset, line) +/obj/effect/overlay/status_display_text/New(obj/parent, yoffset, line) maptext_y = yoffset message = line + sd_parent = parent var/line_length = length_char(line) @@ -206,13 +269,19 @@ maptext = generate_text(line, center = TRUE) maptext_x = 0 + parent.vis_contents += src + +/obj/effect/overlay/status_display_text/Destroy() + sd_parent.vis_contents -= src + return ..() + /obj/effect/overlay/status_display_text/proc/generate_text(text, center) return {"
[text]
"} /// Evac display which shows shuttle timer or message set by Command. /obj/machinery/status_display/evac + current_mode = SD_EMERGENCY var/frequency = FREQ_STATUS_DISPLAYS - var/mode = SD_EMERGENCY var/friendc = FALSE // track if Friend Computer mode var/last_picture // For when Friend Computer mode is undone @@ -235,16 +304,16 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/status_display/evac, 32) /obj/machinery/status_display/evac/process() if(machine_stat & NOPOWER) // No power, no processing. - remove_display() + update_appearance() return PROCESS_KILL if(friendc) //Makes all status displays except supply shuttle timer display the eye -- Urist + current_mode = SD_PICTURE set_picture("ai_friend") return PROCESS_KILL - switch(mode) + switch(current_mode) if(SD_BLANK) - remove_display() return PROCESS_KILL if(SD_EMERGENCY) @@ -259,24 +328,24 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/status_display/evac, 32) /obj/machinery/status_display/evac/examine(mob/user) . = ..() - if(mode == SD_EMERGENCY) + if(current_mode == SD_EMERGENCY) . += examine_shuttle(user, SSshuttle.emergency) - else if(!message1_overlay && !message2_overlay) + else if(!message1 && !message2) . += "The display is blank." /obj/machinery/status_display/evac/receive_signal(datum/signal/signal) switch(signal.data["command"]) if("blank") - mode = SD_BLANK - remove_display() + current_mode = SD_BLANK + update_appearance() if("shuttle") - mode = SD_EMERGENCY - remove_display() + current_mode = SD_EMERGENCY + set_messages("", "") if("message") - mode = SD_MESSAGE - update_display(signal.data["msg1"], signal.data["msg2"]) + current_mode = SD_MESSAGE + set_messages(signal.data["msg1"] || "", signal.data["msg2"] || "") if("alert") - mode = SD_PICTURE + current_mode = SD_PICTURE last_picture = signal.data["picture_state"] set_picture(last_picture) if("friendcomputer") @@ -287,11 +356,12 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/status_display/evac, 32) /// Supply display which shows the status of the supply shuttle. /obj/machinery/status_display/supply name = "supply display" + current_mode = SD_MESSAGE /obj/machinery/status_display/supply/process() if(machine_stat & NOPOWER) // No power, no processing. - remove_display() + update_appearance() return PROCESS_KILL var/line1 @@ -305,12 +375,15 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/status_display/evac, 32) if(is_station_level(SSshuttle.supply.z)) line1 = "CARGO" line2 = "Docked" + else + line1 = "" + line2 = "" else line1 = "CARGO" line2 = SSshuttle.supply.getTimerStr() if(length_char(line2) > CHARS_PER_LINE) line2 = "Error" - update_display(line1, line2) + set_messages(line1, line2) /obj/machinery/status_display/supply/examine(mob/user) . = ..() @@ -330,12 +403,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/status_display/evac, 32) /// General-purpose shuttle status display. /obj/machinery/status_display/shuttle name = "shuttle display" + current_mode = SD_MESSAGE var/shuttle_id /obj/machinery/status_display/shuttle/process() if(!shuttle_id || (machine_stat & NOPOWER)) // No power, no processing. - remove_display() + update_appearance() return PROCESS_KILL return display_shuttle_status(SSshuttle.getShuttle(shuttle_id)) @@ -365,6 +439,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/status_display/evac, 32) /obj/machinery/status_display/ai name = "\improper AI display" desc = "A small screen which the AI can use to present itself." + current_mode = SD_PICTURE var/emotion = AI_EMOTION_BLANK @@ -416,7 +491,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/status_display/ai, 32) /obj/machinery/status_display/ai/process() if(machine_stat & NOPOWER) - remove_display() + update_appearance() return PROCESS_KILL set_picture(emotion_map[emotion]) diff --git a/icons/obj/terminals.dmi b/icons/obj/terminals.dmi index 4b9bb719531440ee90f3a488da78848c3f96f401..274f8c61005fd32af8598962ece8af992aeece94 100644 GIT binary patch literal 17677 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

V85GpYk@*UJl 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 literal 19521 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