diff --git a/code/modules/modular_computers/computers/item/modular_computer.dm b/code/modules/modular_computers/computers/item/modular_computer.dm index 641b4e76d2d..42eaa788915 100644 --- a/code/modules/modular_computers/computers/item/modular_computer.dm +++ b/code/modules/modular_computers/computers/item/modular_computer.dm @@ -12,6 +12,7 @@ var/last_power_usage = 0 var/last_battery_percent = 0 // Used for deciding if battery percentage has chandged var/last_world_time = "00:00" + var/list/last_header_icons var/computer_emagged = 0 // Whether the computer is emagged. var/base_active_power_usage = 50 // Power usage when the computer is open (screen is active) and can be interacted with. Remember hardware can use power too. @@ -210,11 +211,9 @@ P.ntnet_status = get_ntnet_status() P.computer_emagged = computer_emagged - if(worldtime2text() != last_world_time) - last_world_time = worldtime2text() - update_uis() handle_power() // Handles all computer power interaction + check_update_ui_need() // Function used by NanoUI's to obtain data for header. All relevant entries begin with "PC_" /obj/item/modular_computer/proc/get_header_data() @@ -388,11 +387,6 @@ if(battery_module) battery_module.battery.use(power_usage * CELLRATE) - var/batery_percent = battery_module.battery.percent() - - if(last_battery_percent != batery_percent) //Let's update UI on percent chandge - update_uis() - last_battery_percent = batery_percent last_power_usage = power_usage @@ -596,4 +590,30 @@ if(active_program.NM) nanomanager.update_uis(active_program.NM) else - nanomanager.update_uis(src) \ No newline at end of file + nanomanager.update_uis(src) + +/obj/item/modular_computer/proc/check_update_ui_need() + var/ui_updated_needed = 0 + if(battery_module) + var/batery_percent = battery_module.battery.percent() + if(last_battery_percent != batery_percent) //Let's update UI on percent chandge + ui_updated_needed = 1 + last_battery_percent = batery_percent + + if(worldtime2text() != last_world_time) + last_world_time = worldtime2text() + ui_updated_needed = 1 + + if(idle_threads.len) + var/list/current_header_icons = list() + for(var/datum/computer_file/program/P in idle_threads) + if(!P.ui_header) + continue + current_header_icons[P.type] = P.ui_header + + if (!(last_header_icons.len == current_header_icons.len && !length(last_header_icons^current_header_icons))) + last_header_icons = current_header_icons + ui_updated_needed = 1 + + if(ui_updated_needed) + update_uis \ No newline at end of file