mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-21 15:42:35 +00:00
Fixes up VueUi not tested functions and badly designed data push flow. Port main screen in VueUI Port configuration Port device management
167 lines
5.7 KiB
Plaintext
167 lines
5.7 KiB
Plaintext
// Opens VueUI
|
|
/obj/item/modular_computer/ui_interact(mob/user)
|
|
var/datum/vueui/ui = SSvueui.get_open_ui(user, src)
|
|
if(!screen_on || !enabled)
|
|
if(ui)
|
|
ui.close()
|
|
return
|
|
if(!apc_power(0) && !battery_power(0))
|
|
if(ui)
|
|
ui.close()
|
|
return
|
|
|
|
// If we have an active program switch to it now.
|
|
if(active_program)
|
|
active_program.ui_interact(user)
|
|
return
|
|
|
|
// We are still here, that means there is no program loaded. Load the BIOS/ROM/OS/whatever you want to call it.
|
|
// This screen simply lists available programs and user may select them.
|
|
if(!hard_drive || !hard_drive.stored_files || !hard_drive.stored_files.len)
|
|
visible_message("\The [src] beeps three times, it's screen displaying \"DISK ERROR\" warning.")
|
|
return // No HDD, No HDD files list or no stored files. Something is very broken.
|
|
|
|
if (!ui)
|
|
ui = new /datum/vueui/modularcomputer(user, src, "mcomputer-system-main", 400, 500, "NTOS Main Menu")
|
|
ui.header = "modular-computer"
|
|
ui.open()
|
|
|
|
/obj/item/modular_computer/vueui_transfer(oldobj)
|
|
. = FALSE
|
|
var/uis = SSvueui.transfer_uis(oldobj, src, "mcomputer-system-main", 400, 500, "NTOS Main Menu")
|
|
for(var/tui in uis)
|
|
var/datum/vueui/ui = tui
|
|
ui.auto_update_content = FALSE
|
|
. = TRUE
|
|
|
|
// Gaters data for ui
|
|
/obj/item/modular_computer/vueui_data_change(var/list/data, var/mob/user, var/datum/vueui/ui)
|
|
. = ..()
|
|
data = . || data || list()
|
|
// Gather data for computer header
|
|
var/headerdata = get_header_data(data["_PC"])
|
|
if(headerdata)
|
|
data["_PC"] = headerdata
|
|
. = data
|
|
|
|
var/datum/computer_file/data/autorun = hard_drive.find_file_by_name("autorun")
|
|
VUEUI_SET_CHECK_IFNOTSET(data["programs"], list(), ., data)
|
|
for(var/datum/computer_file/program/P in hard_drive.stored_files)
|
|
VUEUI_SET_CHECK_IFNOTSET(data["programs"][P.filename], list(), ., data)
|
|
VUEUI_SET_CHECK(data["programs"][P.filename]["desc"], P.filedesc, ., data)
|
|
VUEUI_SET_CHECK(data["programs"][P.filename]["autorun"], (istype(autorun) && (autorun.stored_data == P.filename)), ., data)
|
|
VUEUI_SET_CHECK(data["programs"][P.filename]["running"], (P in idle_threads), ., data)
|
|
|
|
// Handles user's GUI input
|
|
/obj/item/modular_computer/Topic(href, href_list)
|
|
if(..())
|
|
return 1
|
|
if( href_list["PC_exit"] )
|
|
kill_program()
|
|
return 1
|
|
if( href_list["PC_enable_component"] )
|
|
var/obj/item/weapon/computer_hardware/H = find_hardware_by_name(href_list["PC_enable_component"])
|
|
if(H && istype(H) && !H.enabled)
|
|
H.enabled = 1
|
|
. = 1
|
|
if( href_list["PC_disable_component"] )
|
|
var/obj/item/weapon/computer_hardware/H = find_hardware_by_name(href_list["PC_disable_component"])
|
|
if(H && istype(H) && H.enabled)
|
|
H.enabled = 0
|
|
. = 1
|
|
if( href_list["PC_shutdown"] )
|
|
shutdown_computer()
|
|
return 1
|
|
if( href_list["PC_minimize"] )
|
|
var/mob/user = usr
|
|
minimize_program(user)
|
|
|
|
if( href_list["PC_killprogram"] )
|
|
var/prog = href_list["PC_killprogram"]
|
|
var/datum/computer_file/program/P = null
|
|
var/mob/user = usr
|
|
if(hard_drive)
|
|
P = hard_drive.find_file_by_name(prog)
|
|
|
|
if(!istype(P) || P.program_state == PROGRAM_STATE_KILLED)
|
|
return
|
|
|
|
P.kill_program(1)
|
|
update_uis()
|
|
to_chat(user, "<span class='notice'>Program [P.filename].[P.filetype] with PID [rand(100,999)] has been killed.</span>")
|
|
|
|
if( href_list["PC_runprogram"] )
|
|
. = run_program(href_list["PC_runprogram"])
|
|
ui_interact(usr)
|
|
|
|
if( href_list["PC_setautorun"] )
|
|
if(!hard_drive)
|
|
return
|
|
var/datum/computer_file/data/autorun = hard_drive.find_file_by_name("autorun")
|
|
if(!istype(autorun))
|
|
autorun = new/datum/computer_file/data()
|
|
autorun.filename = "autorun"
|
|
hard_drive.store_file(autorun)
|
|
if(autorun.stored_data == href_list["PC_setautorun"])
|
|
autorun.stored_data = null
|
|
else
|
|
autorun.stored_data = href_list["PC_setautorun"]
|
|
|
|
if(.)
|
|
update_uis()
|
|
|
|
// Function used to obtain data for header. All relevant entries begin with "PC_"
|
|
/obj/item/modular_computer/proc/get_header_data(data)
|
|
if(!data)
|
|
data = list()
|
|
|
|
if(battery_module)
|
|
switch(battery_module.battery.percent())
|
|
if(80 to 200) // 100 should be maximal but just in case..
|
|
VUEUI_SET_CHECK(data["batteryicon"], "batt_100.gif", ., data)
|
|
if(60 to 80)
|
|
VUEUI_SET_CHECK(data["batteryicon"], "batt_80.gif", ., data)
|
|
if(40 to 60)
|
|
VUEUI_SET_CHECK(data["batteryicon"], "batt_60.gif", ., data)
|
|
if(20 to 40)
|
|
VUEUI_SET_CHECK(data["batteryicon"], "batt_40.gif", ., data)
|
|
if(5 to 20)
|
|
VUEUI_SET_CHECK(data["batteryicon"], "batt_20.gif", ., data)
|
|
else
|
|
VUEUI_SET_CHECK(data["batteryicon"], "batt_5.gif", ., data)
|
|
VUEUI_SET_CHECK(data["batterypercent"], "[round(battery_module.battery.percent())] %", ., data)
|
|
data["showbatteryicon"] = 1
|
|
else
|
|
data["batteryicon"] = "batt_5.gif"
|
|
VUEUI_SET_CHECK(data["batterypercent"], "N/C", ., data)
|
|
data["showbatteryicon"] = battery_module ? 1 : 0
|
|
|
|
if(tesla_link && tesla_link.enabled && apc_powered)
|
|
VUEUI_SET_CHECK(data["apclinkicon"], "charging.gif", ., data)
|
|
else
|
|
VUEUI_SET_CHECK(data["apclinkicon"], "", ., data)
|
|
|
|
switch(get_ntnet_status())
|
|
if(0)
|
|
VUEUI_SET_CHECK(data["ntneticon"], "sig_none.gif", ., data)
|
|
if(1)
|
|
VUEUI_SET_CHECK(data["ntneticon"], "sig_low.gif", ., data)
|
|
if(2)
|
|
VUEUI_SET_CHECK(data["ntneticon"], "sig_high.gif", ., data)
|
|
if(3)
|
|
VUEUI_SET_CHECK(data["ntneticon"], "sig_lan.gif", ., data)
|
|
else
|
|
VUEUI_SET_CHECK(data["ntneticon"], "", ., data)
|
|
|
|
LAZYINITLIST(data["programheaders"])
|
|
if(idle_threads.len)
|
|
for(var/datum/computer_file/program/P in idle_threads)
|
|
if(!P.ui_header)
|
|
if(data["programheaders"][P.filename])
|
|
data["programheaders"][P.filename] = null
|
|
. = data
|
|
continue
|
|
VUEUI_SET_CHECK(data["programheaders"][P.filename], P.ui_header, ., data)
|
|
|
|
VUEUI_SET_CHECK(data["showexitprogram"], !!active_program, ., data) // Hides "Exit Program" button on mainscreen
|