Computer dark visibility tweaks (#1829)

changes:

Holo-computers' displays now draw above the lighting layer, allowing them to be seen in the dark.
APCs' displays now draw above the lighting layer, allowing them to be seen in the dark.
This commit is contained in:
Lohikar
2017-03-05 14:28:11 -06:00
committed by skull132
parent f8e808f617
commit e2725ab4cb
17 changed files with 114 additions and 43 deletions
@@ -1,4 +1,5 @@
/obj/item/modular_computer/process()
handle_power() // Handles all computer power interaction
if(!enabled) // The computer is turned off
last_power_usage = 0
return 0
@@ -30,7 +31,7 @@
else
idle_threads.Remove(P)
handle_power() // Handles all computer power interaction
check_update_ui_need()
/obj/item/modular_computer/proc/get_preset_programs(var/app_preset_name)
@@ -75,7 +76,7 @@
return NO_EMAG_ACT
else
computer_emagged = 1
to_chat(user, "You emag \the [src]. It's screen briefly shows a \"OVERRIDE ACCEPTED: New software downloads available.\" message.")
to_chat(user, "You emag \the [src]. Its screen briefly displays a \"OVERRIDE ACCEPTED: New software downloads available.\" message.")
return 1
/obj/item/modular_computer/update_icon()
@@ -85,7 +86,10 @@
if(!enabled)
var/probably_working = hard_drive && processor_unit && damage < broken_damage && (apc_power(0) || battery_power(0))
if(icon_state_screensaver && probably_working)
overlays.Add(icon_state_screensaver)
if (is_holographic)
holographic_overlay(src, src.icon, icon_state_screensaver)
else
overlays += image(icon_state_screensaver)
if (screensaver_light_range && probably_working)
set_light(screensaver_light_range, 1, screensaver_light_color ? screensaver_light_color : "#FFFFFF")
@@ -93,10 +97,17 @@
set_light(0)
return
if(active_program)
overlays.Add(active_program.program_icon_state ? active_program.program_icon_state : icon_state_menu)
var/state = active_program.program_icon_state ? active_program.program_icon_state : icon_state_menu
if (is_holographic)
holographic_overlay(src, src.icon, state)
else
overlays += image(state)
set_light(light_strength, l_color = active_program.color)
else
overlays.Add(icon_state_menu)
if (is_holographic)
holographic_overlay(src, src.icon, icon_state_menu)
else
overlays += image(icon_state_menu)
set_light(light_strength, l_color = menu_light_color)
/obj/item/modular_computer/proc/turn_on(var/mob/user)
@@ -7,6 +7,9 @@
PRG.event_powerfailure(1)
shutdown_computer(0)
power_has_failed = TRUE
update_icon()
// Tries to use power from battery. Passing 0 as parameter results in this proc returning whether battery is functional or not.
/obj/item/modular_computer/proc/battery_power(var/power_usage = 0)
apc_powered = FALSE
@@ -38,14 +41,21 @@
// Handles power-related things, such as battery interaction, recharging, shutdown when it's discharged
/obj/item/modular_computer/proc/handle_power()
var/power_usage = screen_on ? base_active_power_usage : base_idle_power_usage
for(var/obj/item/weapon/computer_hardware/H in get_all_components())
if(H.enabled)
power_usage += H.power_usage
last_power_usage = power_usage
if (enabled)
for(var/obj/item/weapon/computer_hardware/H in get_all_components())
if(H.enabled)
power_usage += H.power_usage
last_power_usage = power_usage
// First tries to charge from an APC, if APC is unavailable switches to battery power. If neither works the computer fails.
if(apc_power(power_usage))
if (power_has_failed)
power_has_failed = FALSE
update_icon()
return
if(battery_power(power_usage))
if (power_has_failed)
power_has_failed = FALSE
update_icon()
return
power_failure()
power_failure()
@@ -35,6 +35,8 @@
var/steel_sheet_cost = 5 // Amount of steel sheets refunded when disassembling an empty frame of this computer.
var/light_strength = 0 // Intensity of light this computer emits. Comparable to numbers light fixtures use.
var/list/idle_threads = list() // Idle programs on background. They still receive process calls but can't be interacted with.
var/power_has_failed = FALSE
var/is_holographic = FALSE
// Damage of the chassis. If the chassis takes too much damage it will break apart.
var/damage = 0 // Current damage level