mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-31 09:09:49 +01:00
Interserver shipping update and other changes
This commit is contained in:
@@ -0,0 +1,176 @@
|
||||
#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 = nanomanager.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
|
||||
Reference in New Issue
Block a user