mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
* Ports SSnetworks killings * Update names.dm * Removes my debug message and fixes instances it caught
113 lines
3.4 KiB
Plaintext
113 lines
3.4 KiB
Plaintext
#define MAXIMUM_POWER_LIMIT 1000000000000000.0
|
|
/datum/computer_file/program/energy_harvester_control
|
|
filename = "energy_harvester_control"
|
|
filedesc = "Energy Harvester Control"
|
|
category = PROGRAM_CATEGORY_ENGINEERING
|
|
ui_header = "energy_harvester_null.gif"
|
|
program_icon_state = "energy_harvester_null"
|
|
extended_desc = "This program connects remotely to the onboard energy harvester, allowing a chief engineer to control the input rates and check for cashflow."
|
|
requires_ntnet = TRUE
|
|
transfer_access = ACCESS_CE
|
|
network_destination = "energy harvester controller"
|
|
size = 1
|
|
tgui_id = "NtosEnergyHarvesterController"
|
|
program_icon = "charging-station"
|
|
|
|
var/status
|
|
var/obj/item/energy_harvester/moneysink
|
|
|
|
///updates icon
|
|
/datum/computer_file/program/energy_harvester_control/process_tick()
|
|
..()
|
|
var/new_status
|
|
if(isnull(moneysink))
|
|
new_status = "null"
|
|
else if(moneysink.input_energy==0)
|
|
new_status = "off"
|
|
else
|
|
new_status = "on"
|
|
|
|
if(new_status != status)
|
|
status = new_status
|
|
ui_header = "energy_harvester_[status].gif"
|
|
program_icon_state = "energy_harvester_[status]"
|
|
if(istype(computer))
|
|
update_computer_icon()
|
|
|
|
/datum/computer_file/program/energy_harvester_control/run_program(mob/living/user)
|
|
. = ..(user)
|
|
refresh()
|
|
|
|
/datum/computer_file/program/energy_harvester_control/kill_program(forced = FALSE)
|
|
moneysink = null
|
|
..()
|
|
|
|
/// Resyncs energy harvester
|
|
/datum/computer_file/program/energy_harvester_control/proc/refresh()
|
|
moneysink = SSeconomy.moneysink
|
|
|
|
/datum/computer_file/program/energy_harvester_control/ui_data()
|
|
var/list/data = get_header_data()
|
|
var/turf/T = get_turf(moneysink)
|
|
var/turf/curr = get_turf(ui_host())
|
|
|
|
if(isnull(moneysink)||!T) //something has gone horribly wrong, time to abort.
|
|
data["status"] = "null"
|
|
else
|
|
if(!moneysink.anchored || isnull(moneysink.PN) || moneysink.input_energy==0)
|
|
data["status"] = "Unpowered"
|
|
else
|
|
data["status"] = "Working"
|
|
data["x"] = T.x
|
|
data["y"] = T.y
|
|
data["area"] = get_area_name(T)
|
|
data["dist"] = get_dist_euclidian(curr, T)
|
|
data["rotation"] = Get_Angle(curr, T)
|
|
data["power"] = moneysink.accumulated_power
|
|
data["power_setting"] = moneysink.manual_power_setting
|
|
data["input"] = moneysink.input_energy
|
|
data["power_switch"] = moneysink.manual_switch
|
|
data["payout"] = moneysink.calculateMoney()
|
|
data["last_power"] = moneysink.last_accumulated_power
|
|
data["last_payout"] = moneysink.last_payout
|
|
|
|
return data
|
|
|
|
/datum/computer_file/program/energy_harvester_control/ui_act(action, params)
|
|
if(..())
|
|
return
|
|
switch(action)
|
|
if("switch")
|
|
computer.play_interact_sound()
|
|
moneysink.manual_switch = !moneysink.manual_switch
|
|
if(moneysink.manual_switch)
|
|
START_PROCESSING(SSobj, moneysink)
|
|
else
|
|
STOP_PROCESSING(SSobj, moneysink)
|
|
. = TRUE
|
|
if("setinput")
|
|
var/target = params["target"]
|
|
computer.play_interact_sound()
|
|
if(target == "input")
|
|
target = input("New input target (0-[MAXIMUM_POWER_LIMIT]):", moneysink.name, moneysink.manual_power_setting) as num|null
|
|
computer.play_interact_sound()
|
|
if(!isnull(target) && !..())
|
|
. = TRUE
|
|
else if(target == "min")
|
|
target = 0
|
|
. = TRUE
|
|
else if(target == "max")
|
|
target = MAXIMUM_POWER_LIMIT
|
|
. = TRUE
|
|
else if(text2num(target) != null)
|
|
target = text2num(target)
|
|
. = TRUE
|
|
else if(isnum(target))
|
|
. = TRUE
|
|
if(.)
|
|
moneysink.manual_power_setting = clamp(target, 0, MAXIMUM_POWER_LIMIT)
|
|
|
|
|
|
|
|
#undef MAXIMUM_POWER_LIMIT
|