Files
CHOMPStation2/code/modules/interserver shipping/computer_yw.dm
Hawk_v3 c69af2759f UI fixes
All compiles now
2019-04-14 19:56:11 +01:00

176 lines
4.8 KiB
Plaintext

#define SERVERS 0
#define OPTIONS 1
#define RECEIVE 2
#define REC_CONF 3
#define SENDING 4
#define CHAT 5
/obj/machinery/computer/interservershipping
name = "Shipping Computer"
desc = "Used to send illicit goods to other stations with real humans."
icon_keyboard = "med_key"
icon_screen = "crew"
light_color = "#315ab4"
use_power = 1
var/screen = SERVERS
var/datum/shippingservers/server = null
var/datum/shipping_request/request = null
/obj/machinery/computer/interservershipping/Destroy()
request = null
server = null
return ..()
/obj/machinery/computer/interservershipping/attack_ai(mob/user)
return attack_hand(user)
/obj/machinery/computer/interservershipping/attack_hand(mob/user)
ui_interact(user)
/obj/machinery/computer/interservershipping/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
user.set_machine(src)
var/data[0]
data["screen"] = screen
data["error"] = 0
switch (screen)
if (SERVERS)
if (!config.authedservers.len)
data["error"] = 1
data["error_msg"] = "We could not establish communication with any other stations."
else
var/list/temp = list()
for (var/A in config.authedservers)
var/datum/shippingservers/serv = config.authedservers[A]
if (serv)
temp += list(list("name" = serv.servername, "ref" = "\ref[serv]"))
data["servers"] = temp
if (OPTIONS)
if (!server)
data["error"] = 1
data["error_msg"] = "Connection to the station lost. Resetting."
else
data["server"] = server.servername
data["requests"] = 0
if (shipping_contacts[server.serverip])
var/list/A = shipping_contacts[server.serverip]
data["requests"] = A.len
if (RECEIVE)
if (!server)
data["error"] = 1
data["error_msg"] = "Connection to the station lost. Resetting."
else
data["server"] = server.servername
var/list/requests = shipping_contacts[server.serverip]
var/list/temp = list()
if (requests && requests.len)
for (var/A in requests)
var/datum/shipping_request/req = A
temp += list(list("id" = req.request_id, "item_count" = req.items.len, "ref" = "\ref[req]"))
data["requests"] = temp
if (REC_CONF)
if (!request || !server)
data["error"] = 1
data["error_msg"] = "Shipping request expired."
else
data["id"] = request.request_id
data["server"] = server.servername
var/list/temp = list()
for (var/A in request.items)
temp += list(list("id" = A, "count" = request.items[A]))
data["items"] = temp
if (SENDING)
// TODO: Implement SENDING
if (CHAT)
// TODO: Implement CHAT
else
data["error"] = 1
data["error_msg"] = "u wot m8"
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "server_shipping.tmpl", src.name, 400, 500)
ui.set_initial_data(data)
ui.open()
/obj/machinery/computer/interservershipping/Topic(href, href_list)
if (..())
return 1
if (href_list["switch_menu"])
var/new_menu = text2num(href_list["switch_menu"])
screen = sanitize_integer(new_menu, 0, 5, 0)
if (screen == REC_CONF)
if (href_list["shipment"])
var/datum/shipping_request/req = locate(href_list["shipment"])
if (!req || !istype(req))
screen = SERVERS
else
request = req
else if (href_list["select_station"])
var/datum/shippingservers/serv = locate(href_list["select_station"])
if (!serv || !istype(serv))
screen = SERVERS
else
server = serv
screen = OPTIONS
else if (href_list["confirm"])
// Confirmation == TRUE or FALSE
var/confirmation = text2num(href_list["confirm"])
do_confirm(confirmation, usr)
src.add_fingerprint(usr)
src.updateUsrDialog()
return
/obj/machinery/computer/interservershipping/proc/do_confirm(var/confirmation, var/mob/user)
if (!user || !istype(user) || !user.client)
return
if (!request)
return
if (confirmation)
request.inbound_accepted(user.ckey)
else
request.inbound_denied(user.ckey)
request = null
screen = RECEIVE
/obj/machinery/intershipreceiver
name = "Bluespace package receiver"
desc = "Push crate in, be amaze."
var/list/inserted = list()
/obj/machinery/intershipreceiver/Bumped(atom/movable/AM as mob)
if(istype(AM, /obj/structure/closet/crate))
inserted += AM
AM.forceMove(src)
/obj/machinery/intershipreceiver/proc/GetItems(var/index)
if(!isnull(inserted) && inserted.len > index)
var/obj/structure/closet/crate/O = inserted[index]
return O.contents
/obj/machinery/intershipreceiver/proc/PackageSent(var/index)
if(!isnull(inserted) && inserted.len > index)
var/obj/structure/closet/crate/O = inserted[index]
inserted.Remove(O)
qdel(O)
/obj/machinery/intershipdeployer
name = "Bluespace package deployer"
desc = "Press button, watch crate appear, be amaze."
/obj/machinery/intershipdeployer/proc/SpawnPackage(var/list/objs)
var/obj/structure/closet/crate/C = new/obj/structure/closet/crate
C.contents = objs
C.loc = src.loc