mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-16 12:43:09 +00:00
* Removes tablet hard drives entirely (HDD & SSD) * map updates * changes * contractor uplink theme * uplink improvements * tab Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: tastyfish <crazychris32@gmail.com>
63 lines
2.2 KiB
Plaintext
63 lines
2.2 KiB
Plaintext
// Tries to draw power from charger or, if no operational charger is present, from power cell.
|
|
/obj/item/modular_computer/proc/use_power(amount = 0)
|
|
if(check_power_override())
|
|
return TRUE
|
|
|
|
if(ismachinery(loc))
|
|
var/obj/machinery/machine_holder = loc
|
|
if(machine_holder.powered())
|
|
machine_holder.use_power(amount)
|
|
return TRUE
|
|
|
|
var/obj/item/computer_hardware/battery/battery_module = all_components[MC_CELL]
|
|
if(battery_module && battery_module.battery && battery_module.battery.charge)
|
|
var/obj/item/stock_parts/cell/cell = battery_module.battery
|
|
if(cell.use(amount JOULES))
|
|
return TRUE
|
|
else // Discharge the cell anyway.
|
|
cell.use(min(amount JOULES, cell.charge))
|
|
return FALSE
|
|
return FALSE
|
|
|
|
/obj/item/modular_computer/proc/give_power(amount)
|
|
var/obj/item/computer_hardware/battery/battery_module = all_components[MC_CELL]
|
|
if(battery_module?.battery)
|
|
return battery_module.battery.give(amount)
|
|
return 0
|
|
|
|
/obj/item/modular_computer/get_cell()
|
|
var/obj/item/computer_hardware/battery/battery_module = all_components[MC_CELL]
|
|
return battery_module?.get_cell()
|
|
|
|
// Used in following function to reduce copypaste
|
|
/obj/item/modular_computer/proc/power_failure()
|
|
if(enabled) // Shut down the computer
|
|
if(active_program)
|
|
active_program.event_powerfailure(0)
|
|
for(var/datum/computer_file/program/programs as anything in idle_threads)
|
|
programs.event_powerfailure(background = TRUE)
|
|
shutdown_computer(0)
|
|
|
|
// Handles power-related things, such as battery interaction, recharging, shutdown when it's discharged
|
|
/obj/item/modular_computer/proc/handle_power(delta_time)
|
|
var/power_usage = screen_on ? base_active_power_usage : base_idle_power_usage
|
|
|
|
for(var/obj/item/computer_hardware/H in all_components)
|
|
if(H.enabled)
|
|
power_usage += H.power_usage
|
|
|
|
if(use_power(power_usage))
|
|
last_power_usage = power_usage
|
|
return TRUE
|
|
else
|
|
power_failure()
|
|
return FALSE
|
|
|
|
///Used by subtypes for special cases for power usage, returns TRUE if it should stop the use_power chain.
|
|
/obj/item/modular_computer/proc/check_power_override()
|
|
return FALSE
|
|
|
|
//Integrated (Silicon) tablets don't drain power, because the tablet is required to state laws, so it being disabled WILL cause problems.
|
|
/obj/item/modular_computer/tablet/integrated/check_power_override()
|
|
return TRUE
|