From d8b43188e2f0405f5c3f38823746618d124fae39 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Mon, 21 Dec 2020 18:48:12 +0400 Subject: [PATCH 1/2] Merge pull request #1022 from Andromeda-K22/display_and_alarm_tweaks Grayscaled Alarm and Status Display Icons --- code/datums/security_state.dm | 77 ++++++++++++++++++++++++++ code/game/machinery/alarm.dm | 13 ++++- code/game/machinery/status_display.dm | 17 +++++- code/unit_tests/security_state.dm | 18 ++++++ icons/misc/security_state.dmi | Bin 5227 -> 5258 bytes nebula.dme | 1 + 6 files changed, 122 insertions(+), 4 deletions(-) create mode 100644 code/unit_tests/security_state.dm diff --git a/code/datums/security_state.dm b/code/datums/security_state.dm index 8cbb5c51c91..f992709b90e 100644 --- a/code/datums/security_state.dm +++ b/code/datums/security_state.dm @@ -148,6 +148,13 @@ var/up_description var/down_description + var/datum/alarm_appearance/alarm_appearance + +/decl/security_level/New() + . = ..() + if(ispath(alarm_appearance, /datum/alarm_appearance)) + alarm_appearance = new alarm_appearance + // Called when we're switching from a lower security level to this one. /decl/security_level/proc/switching_up_to() return @@ -205,6 +212,8 @@ overlay_alarm = "alarm_green" overlay_status_display = "status_display_green" + alarm_appearance = /datum/alarm_appearance/green + down_description = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced." /decl/security_level/default/code_blue @@ -219,6 +228,8 @@ overlay_alarm = "alarm_blue" overlay_status_display = "status_display_blue" + alarm_appearance = /datum/alarm_appearance/blue + up_description = "The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted." down_description = "The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed." @@ -234,6 +245,8 @@ overlay_alarm = "alarm_red" overlay_status_display = "status_display_red" + alarm_appearance = /datum/alarm_appearance/red + up_description = "There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised." down_description = "The self-destruct mechanism has been deactivated, there is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised." @@ -246,6 +259,8 @@ light_color_alarm = COLOR_RED light_color_status_display = COLOR_NAVY_BLUE + alarm_appearance = /datum/alarm_appearance/delta + overlay_alarm = "alarm_delta" overlay_status_display = "status_display_delta" @@ -254,3 +269,65 @@ /decl/security_level/default/code_delta/switching_up_to() security_announcement_delta.Announce("The self-destruct mechanism has been engaged. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill.", "Attention! Delta security level reached!") notify_station() + +/datum/alarm_appearance + var/display_icon //The icon_state for the displays. Normally only one is used, unless uses_twotone_displays is TRUE. + var/display_icon_color //The color for the display icon. + + var/display_icon_twotone //Used for two-tone displays. + var/display_icon_twotone_color //The color for the display icon. + + var/display_emblem //The icon_state for the emblem, i.e for delta, a radstorm, alerts. + var/display_emblem_color //The color for the emblem. + + var/alarm_icon //The icon_state for the alarms + var/alarm_icon_color //the color for the icon_state + + var/alarm_icon_twotone //Used for two-tone alarms (i.e delta). + var/alarm_icon_twotone_color //The color for the secondary tone icon. + +/datum/alarm_appearance/green + display_icon = "status_display_lines" + display_icon_color = PIPE_COLOR_GREEN + + display_emblem = "status_display_alert" + display_emblem_color = COLOR_WHITE + + alarm_icon = "alarm_normal" + alarm_icon_color = PIPE_COLOR_GREEN + +/datum/alarm_appearance/blue + display_icon = "status_display_lines" + display_icon_color = COLOR_BLUE + + display_emblem = "status_display_alert" + display_emblem_color = COLOR_WHITE + + alarm_icon = "alarm_normal" + alarm_icon_color = COLOR_BLUE + +/datum/alarm_appearance/red + display_icon = "status_display_lines" + display_icon_color = COLOR_RED + + display_emblem = "status_display_alert" + display_emblem_color = COLOR_WHITE + + alarm_icon = "alarm_blinking" + alarm_icon_color = COLOR_RED + +/datum/alarm_appearance/delta + display_icon = "status_display_twotone1" + display_icon_color = COLOR_RED + + display_icon_twotone = "status_display_twotone2" + display_icon_twotone_color = COLOR_YELLOW + + display_emblem = "delta" + display_emblem_color = COLOR_WHITE + + alarm_icon = "alarm_blinking_twotone1" + alarm_icon_color = COLOR_RED + + alarm_icon_twotone = "alarm_blinking_twotone2" + alarm_icon_twotone_color = PIPE_COLOR_YELLOW \ No newline at end of file diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 628829080d9..1430276b619 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -159,7 +159,7 @@ GLOB.name_set_event.register(alarm_area, src, .proc/change_area_name) set_frequency(frequency) - update_icon() + queue_icon_update() /obj/machinery/alarm/get_req_access() if(!locked) @@ -870,7 +870,16 @@ FIRE ALARM var/decl/security_level/sl = security_state.current_security_level set_light(sl.light_max_bright, sl.light_inner_range, sl.light_outer_range, 2, sl.light_color_alarm) - overlays += image(sl.icon, sl.overlay_alarm) + + if(sl.alarm_appearance.alarm_icon) + var/image/alert1 = image(sl.icon, sl.alarm_appearance.alarm_icon) + alert1.color = sl.alarm_appearance.alarm_icon_color + overlays |= alert1 + + if(sl.alarm_appearance.alarm_icon_twotone) + var/image/alert2 = image(sl.icon, sl.alarm_appearance.alarm_icon_twotone) + alert2.color = sl.alarm_appearance.alarm_icon_twotone_color + overlays |= alert2 else overlays += get_cached_overlay("fire0") diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 887e37a315e..19e242998f4 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -165,9 +165,22 @@ var/decl/security_state/security_state = decls_repository.get_decl(GLOB.using_map.security_state) var/decl/security_level/sl = security_state.current_security_level - var/image/alert = image(sl.icon, sl.overlay_status_display) set_light(sl.light_max_bright, sl.light_inner_range, sl.light_outer_range, 2, sl.light_color_alarm) - overlays |= alert + + if(sl.alarm_appearance.display_icon) + var/image/alert1 = image(sl.icon, sl.alarm_appearance.display_icon) + alert1.color = sl.alarm_appearance.display_icon_color + overlays |= alert1 + + if(sl.alarm_appearance.display_icon_twotone) + var/image/alert2 = image(sl.icon, sl.alarm_appearance.display_icon_twotone) + alert2.color = sl.alarm_appearance.display_icon_twotone_color + overlays |= alert2 + + if(sl.alarm_appearance.display_emblem) + var/image/alert3 = image(sl.icon, sl.alarm_appearance.display_emblem) + alert3.color = sl.alarm_appearance.display_emblem_color + overlays |= alert3 /obj/machinery/status_display/proc/set_picture(state) remove_display() diff --git a/code/unit_tests/security_state.dm b/code/unit_tests/security_state.dm new file mode 100644 index 00000000000..ab177b701b6 --- /dev/null +++ b/code/unit_tests/security_state.dm @@ -0,0 +1,18 @@ +/datum/unit_test/shall_have_valid_alarm_appearance + name = "SECURITY STATES: Shall Have Valid Alarm Appearance Datum Types" + +/datum/unit_test/shall_have_valid_alarm_appearance/start_test() + var/list/security_levels = decls_repository.get_decls_of_subtype(/decl/security_level) + var/list/failures + var/list/blacklist = list(/decl/security_level/default) + for(var/sec_key in security_levels) + var/decl/security_level/level = security_levels[sec_key] + if(level.type in blacklist) + continue + if(!istype(level.alarm_appearance, /datum/alarm_appearance)) + LAZYADD(failures, "[level.type]") + if(LAZYLEN(failures)) + fail("One or more security levels did not have their alarm_appearance_type var set: [english_list(failures)]") + else + pass("All security levels have their alarm_appearance_type set.") + return 1 \ No newline at end of file diff --git a/icons/misc/security_state.dmi b/icons/misc/security_state.dmi index ca5d0f05ed7ad47c44c08d961bf17c487a6f22f6..aff829cdb6c3496bc1f6a9dc58de15dc88d4cfa4 100644 GIT binary patch literal 5258 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 literal 5227 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 KwaPSX!u|my2FD8k diff --git a/nebula.dme b/nebula.dme index 36bd2d696d9..96ded417f7c 100644 --- a/nebula.dme +++ b/nebula.dme @@ -3208,6 +3208,7 @@ #include "code\unit_tests\music_test.dm" #include "code\unit_tests\organ_tests.dm" #include "code\unit_tests\power_tests.dm" +#include "code\unit_tests\security_state.dm" #include "code\unit_tests\seed_tests.dm" #include "code\unit_tests\shuttle_tests.dm" #include "code\unit_tests\submaps.dm" From 478880d89bf33f029d8700733f6af4485554b6fa Mon Sep 17 00:00:00 2001 From: SkyratBot Date: Mon, 21 Dec 2020 09:48:40 -0500 Subject: [PATCH 2/2] Grayscaled Alarm and Status Display Icons