mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-21 19:19:12 +01:00
TGUI Research
This commit is contained in:
+121
-120
@@ -157,143 +157,144 @@
|
||||
var/list/consoles = list()
|
||||
var/badmin = 0
|
||||
|
||||
/obj/machinery/computer/rdservercontrol/Topic(href, href_list)
|
||||
/obj/machinery/computer/rdservercontrol/tgui_status(mob/user)
|
||||
. = ..()
|
||||
if(!allowed(user) && !emagged)
|
||||
. = min(., STATUS_UPDATE)
|
||||
|
||||
/obj/machinery/computer/rdservercontrol/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, "ResearchServerController", name)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/computer/rdservercontrol/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/list/data = ..()
|
||||
|
||||
data["badmin"] = badmin
|
||||
|
||||
var/list/server_list = list()
|
||||
data["servers"] = server_list
|
||||
for(var/obj/machinery/r_n_d/server/S in machines)
|
||||
if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin)
|
||||
continue
|
||||
var/list/server_data = list(
|
||||
"name" = S.name,
|
||||
"ref" = REF(S),
|
||||
"id" = S.server_id,
|
||||
"id_with_upload" = S.id_with_upload,
|
||||
"id_with_download" = S.id_with_download,
|
||||
"tech" = list(),
|
||||
"designs" = list(),
|
||||
)
|
||||
for(var/datum/tech/T in S.files.known_tech)
|
||||
server_data["tech"].Add(list(list(
|
||||
"name" = T.name,
|
||||
"id" = T.id,
|
||||
)))
|
||||
for(var/datum/design/D in S.files.known_designs)
|
||||
server_data["designs"].Add(list(list(
|
||||
"name" = D.name,
|
||||
"id" = D.id,
|
||||
)))
|
||||
server_list.Add(list(server_data))
|
||||
|
||||
var/list/console_list = list()
|
||||
data["consoles"] = console_list
|
||||
for(var/obj/machinery/computer/rdconsole/C in machines)
|
||||
if(!C.sync)
|
||||
continue
|
||||
console_list.Add(list(list(
|
||||
"name" = C.name,
|
||||
"ref" = REF(C),
|
||||
"loc" = get_area(C),
|
||||
"id" = C.id,
|
||||
)))
|
||||
|
||||
return data
|
||||
|
||||
/obj/machinery/computer/rdservercontrol/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
if(..())
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
add_fingerprint(usr)
|
||||
usr.set_machine(src)
|
||||
if(!allowed(usr) && !emagged)
|
||||
to_chat(usr, "<span class='warning'>You do not have the required access level</span>")
|
||||
return
|
||||
switch(action)
|
||||
if("toggle_upload", "toggle_download")
|
||||
var/obj/machinery/r_n_d/server/S = locate(params["server"])
|
||||
if(!istype(S))
|
||||
return
|
||||
if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin)
|
||||
return
|
||||
var/obj/machinery/computer/rdconsole/C = locate(params["console"])
|
||||
if(!istype(C) || !C.sync)
|
||||
return
|
||||
|
||||
if(href_list["main"])
|
||||
screen = 0
|
||||
switch(action)
|
||||
if("toggle_upload")
|
||||
if(C.id in S.id_with_upload)
|
||||
S.id_with_upload -= C.id
|
||||
else
|
||||
S.id_with_upload += C.id
|
||||
if("toggle_download")
|
||||
if(C.id in S.id_with_download)
|
||||
S.id_with_download -= C.id
|
||||
else
|
||||
S.id_with_download += C.id
|
||||
return TRUE
|
||||
|
||||
else if(href_list["access"] || href_list["data"] || href_list["transfer"])
|
||||
temp_server = null
|
||||
consoles = list()
|
||||
servers = list()
|
||||
for(var/obj/machinery/r_n_d/server/S in machines)
|
||||
if(S.server_id == text2num(href_list["access"]) || S.server_id == text2num(href_list["data"]) || S.server_id == text2num(href_list["transfer"]))
|
||||
temp_server = S
|
||||
break
|
||||
if(href_list["access"])
|
||||
screen = 1
|
||||
for(var/obj/machinery/computer/rdconsole/C in machines)
|
||||
if(C.sync)
|
||||
consoles += C
|
||||
else if(href_list["data"])
|
||||
screen = 2
|
||||
else if(href_list["transfer"])
|
||||
screen = 3
|
||||
for(var/obj/machinery/r_n_d/server/S in machines)
|
||||
if(S == src)
|
||||
continue
|
||||
servers += S
|
||||
if("reset_tech")
|
||||
var/obj/machinery/r_n_d/server/target = locate(params["server"])
|
||||
if(!istype(target))
|
||||
return FALSE
|
||||
var/choice = alert("Technology Data Rest", "Are you sure you want to reset this technology to its default data? Data lost cannot be recovered.", "Continue", "Cancel")
|
||||
if(choice == "Continue")
|
||||
for(var/datum/tech/T in target.files.known_tech)
|
||||
if(T.id == params["tech"])
|
||||
T.level = 1
|
||||
break
|
||||
target.files.RefreshResearch()
|
||||
return TRUE
|
||||
|
||||
else if(href_list["upload_toggle"])
|
||||
var/num = text2num(href_list["upload_toggle"])
|
||||
if(num in temp_server.id_with_upload)
|
||||
temp_server.id_with_upload -= num
|
||||
else
|
||||
temp_server.id_with_upload += num
|
||||
if("reset_design")
|
||||
var/obj/machinery/r_n_d/server/target = locate(params["server"])
|
||||
if(!istype(target))
|
||||
return FALSE
|
||||
var/choice = alert("Design Data Deletion", "Are you sure you want to delete this design? If you still have the prerequisites for the design, it'll reset to its base reliability. Data lost cannot be recovered.", "Continue", "Cancel")
|
||||
if(choice == "Continue")
|
||||
for(var/datum/design/D in target.files.known_designs)
|
||||
if(D.id == params["design"])
|
||||
target.files.known_designs -= D
|
||||
break
|
||||
target.files.RefreshResearch()
|
||||
return TRUE
|
||||
|
||||
else if(href_list["download_toggle"])
|
||||
var/num = text2num(href_list["download_toggle"])
|
||||
if(num in temp_server.id_with_download)
|
||||
temp_server.id_with_download -= num
|
||||
else
|
||||
temp_server.id_with_download += num
|
||||
|
||||
else if(href_list["reset_tech"])
|
||||
var/choice = alert("Technology Data Rest", "Are you sure you want to reset this technology to its default data? Data lost cannot be recovered.", "Continue", "Cancel")
|
||||
if(choice == "Continue")
|
||||
for(var/datum/tech/T in temp_server.files.known_tech)
|
||||
if(T.id == href_list["reset_tech"])
|
||||
T.level = 1
|
||||
break
|
||||
temp_server.files.RefreshResearch()
|
||||
|
||||
else if(href_list["reset_design"])
|
||||
var/choice = alert("Design Data Deletion", "Are you sure you want to delete this design? If you still have the prerequisites for the design, it'll reset to its base reliability. Data lost cannot be recovered.", "Continue", "Cancel")
|
||||
if(choice == "Continue")
|
||||
for(var/datum/design/D in temp_server.files.known_designs)
|
||||
if(D.id == href_list["reset_design"])
|
||||
temp_server.files.known_designs -= D
|
||||
break
|
||||
temp_server.files.RefreshResearch()
|
||||
|
||||
updateUsrDialog()
|
||||
return
|
||||
if("transfer_data")
|
||||
if(!badmin)
|
||||
// no href exploits, you've been r e p o r t e d
|
||||
log_admin("Warning: [key_name(usr)] attempted to transfer R&D data from [params["server"]] to [params["target"]] via href exploit with [src] [COORD(src)]")
|
||||
message_admins("Warning: [ADMIN_FULLMONTY(usr)] attempted to transfer R&D data from [params["server"]] to [params["target"]] via href exploit with [src] [ADMIN_COORDJMP(src)]")
|
||||
return FALSE
|
||||
var/obj/machinery/r_n_d/server/from = locate(params["server"])
|
||||
if(!istype(from))
|
||||
return
|
||||
var/obj/machinery/r_n_d/server/target = locate(params["target"])
|
||||
if(!istype(target))
|
||||
return
|
||||
target.files.known_designs |= from.files.known_designs
|
||||
target.files.known_tech |= from.files.known_tech
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/computer/rdservercontrol/attack_hand(mob/user as mob)
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
return
|
||||
user.set_machine(src)
|
||||
var/dat = ""
|
||||
|
||||
switch(screen)
|
||||
if(0) //Main Menu
|
||||
dat += "Connected Servers:<BR><BR>"
|
||||
|
||||
for(var/obj/machinery/r_n_d/server/S in machines)
|
||||
if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin)
|
||||
continue
|
||||
dat += "[S.name] || "
|
||||
dat += "<A href='?src=\ref[src];access=[S.server_id]'> Access Rights</A> | "
|
||||
dat += "<A href='?src=\ref[src];data=[S.server_id]'>Data Management</A>"
|
||||
if(badmin) dat += " | <A href='?src=\ref[src];transfer=[S.server_id]'>Server-to-Server Transfer</A>"
|
||||
dat += "<BR>"
|
||||
|
||||
if(1) //Access rights menu
|
||||
dat += "[temp_server.name] Access Rights<BR><BR>"
|
||||
dat += "Consoles with Upload Access<BR>"
|
||||
for(var/obj/machinery/computer/rdconsole/C in consoles)
|
||||
var/turf/console_turf = get_turf(C)
|
||||
dat += "* <A href='?src=\ref[src];upload_toggle=[C.id]'>[console_turf.loc]" //FYI, these are all numeric ids, eventually.
|
||||
if(C.id in temp_server.id_with_upload)
|
||||
dat += " (Remove)</A><BR>"
|
||||
else
|
||||
dat += " (Add)</A><BR>"
|
||||
dat += "Consoles with Download Access<BR>"
|
||||
for(var/obj/machinery/computer/rdconsole/C in consoles)
|
||||
var/turf/console_turf = get_turf(C)
|
||||
dat += "* <A href='?src=\ref[src];download_toggle=[C.id]'>[console_turf.loc]"
|
||||
if(C.id in temp_server.id_with_download)
|
||||
dat += " (Remove)</A><BR>"
|
||||
else
|
||||
dat += " (Add)</A><BR>"
|
||||
dat += "<HR><A href='?src=\ref[src];main=1'>Main Menu</A>"
|
||||
|
||||
if(2) //Data Management menu
|
||||
dat += "[temp_server.name] Data ManagementP<BR><BR>"
|
||||
dat += "Known Technologies<BR>"
|
||||
for(var/datum/tech/T in temp_server.files.known_tech)
|
||||
dat += "* [T.name] "
|
||||
dat += "<A href='?src=\ref[src];reset_tech=[T.id]'>(Reset)</A><BR>" //FYI, these are all strings.
|
||||
dat += "Known Designs<BR>"
|
||||
for(var/datum/design/D in temp_server.files.known_designs)
|
||||
dat += "* [D.name] "
|
||||
dat += "<A href='?src=\ref[src];reset_design=[D.id]'>(Delete)</A><BR>"
|
||||
dat += "<HR><A href='?src=\ref[src];main=1'>Main Menu</A>"
|
||||
|
||||
if(3) //Server Data Transfer
|
||||
dat += "[temp_server.name] Server to Server Transfer<BR><BR>"
|
||||
dat += "Send Data to what server?<BR>"
|
||||
for(var/obj/machinery/r_n_d/server/S in servers)
|
||||
dat += "[S.name] <A href='?src=\ref[src];send_to=[S.server_id]'> (Transfer)</A><BR>"
|
||||
dat += "<HR><A href='?src=\ref[src];main=1'>Main Menu</A>"
|
||||
user << browse("<TITLE>R&D Server Control</TITLE><HR>[dat]", "window=server_control;size=575x400")
|
||||
onclose(user, "server_control")
|
||||
return
|
||||
tgui_interact(user)
|
||||
|
||||
/obj/machinery/computer/rdservercontrol/emag_act(var/remaining_charges, var/mob/user)
|
||||
if(!emagged)
|
||||
playsound(src, 'sound/effects/sparks4.ogg', 75, 1)
|
||||
emagged = 1
|
||||
to_chat(user, "<span class='notice'>You you disable the security protocols.</span>")
|
||||
src.updateUsrDialog()
|
||||
SStgui.update_uis(src)
|
||||
return 1
|
||||
|
||||
/obj/machinery/r_n_d/server/robotics
|
||||
|
||||
Reference in New Issue
Block a user