mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
176 lines
4.8 KiB
Plaintext
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 |