diff --git a/code/controllers/configuration_yw.dm b/code/controllers/configuration_yw.dm index 9219ffdbd6..065b981beb 100644 --- a/code/controllers/configuration_yw.dm +++ b/code/controllers/configuration_yw.dm @@ -2,6 +2,8 @@ var/shipping_auth = "memes" var/list/authedservers = list() +// Example line in the config: +// 192.168.1.1:1234 ServerName;ServerPW (The PW of that server, ask them for it) /datum/configuration/proc/loadshippinglist(filename) var/list/Lines = file2list(filename) for (var/t in Lines) @@ -40,6 +42,7 @@ var/serverip var/servername var/serverauth + var/list/allowedshipids /datum/shippingservers/New(_serverip, _servername, _serverauth) if(!_serverip || !_servername || !_serverauth) diff --git a/code/modules/interserver shipping/computer_yw.dm b/code/modules/interserver shipping/computer_yw.dm new file mode 100644 index 0000000000..9a553aa663 --- /dev/null +++ b/code/modules/interserver shipping/computer_yw.dm @@ -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 \ No newline at end of file diff --git a/code/modules/mining/reward_yw.dm b/code/modules/mining/reward_yw.dm index 763a623b89..5d2a1e5e2f 100644 --- a/code/modules/mining/reward_yw.dm +++ b/code/modules/mining/reward_yw.dm @@ -1,6 +1,6 @@ /obj/machinery/miningreward - name = "Coin reward" - desc = "Idk." + name = "Mining reward machine" + desc = "Feed coins, get something worth your time.. Ish..." icon = 'icons/obj/machines/antimatter.dmi' icon_state = "control" anchored = 1 @@ -10,7 +10,9 @@ active_power_usage = 10 var/totalmoney = 0 - var/list/products = list( /obj/item/weapon/pickaxe/silver, + var/list/products = list( + /obj/item/device/binoculars, + /obj/item/weapon/pickaxe/silver, /obj/item/weapon/pickaxe/drill, /obj/item/weapon/pickaxe/jackhammer, /obj/item/weapon/pickaxe/gold, @@ -21,15 +23,16 @@ /obj/vehicle/train/rover/engine, /obj/vehicle/train/rover/trolley) - var/list/prices = list( /obj/item/weapon/pickaxe/silver = 200, + var/list/prices = list( /obj/item/device/binoculars = 200, + /obj/item/weapon/pickaxe/silver = 200, /obj/item/weapon/pickaxe/drill = 240, /obj/item/weapon/pickaxe/jackhammer = 300, /obj/item/weapon/pickaxe/gold = 360, /obj/item/weapon/pickaxe/plasmacutter = 460, /obj/item/weapon/pickaxe/diamond = 500, /obj/item/weapon/pickaxe/diamonddrill = 600, - /obj/vehicle/bike/ = 3000, - /obj/vehicle/train/rover/engine = 6000, + /obj/vehicle/bike/ = 1500, + /obj/vehicle/train/rover/engine = 3000, /obj/vehicle/train/rover/trolley = 200) diff --git a/nano/templates/server_shipping.tmpl b/nano/templates/server_shipping.tmpl new file mode 100644 index 0000000000..e774a0d0fc --- /dev/null +++ b/nano/templates/server_shipping.tmpl @@ -0,0 +1,87 @@ +{{if data.error == 1}} +
+
+ ERROR +
+
+ {{:data.error_msg}} +

+ {{:helper.link('Return', '', {'switch_menu' : 0}, 'selected')}} +
+
+{{else}} +
+ {{if data.screen == 0}} +
+ Available Stations +
+
+ {{for data.servers}} + {{:helper.link(value.name, '', {'select_station' : value.ref})}} + {{empty}} + No stations located. + {{/for}} +
+ {{else data.screen == 1}} +
+ Options for {{:data.server}} +
+
+ {{:helper.link('Send Shipment', '', {'switch_menu' : 4})}} + {{:helper.link('Receive Shipments (' + data.requests + ')', '', {'switch_menu' : 2})}} + {{:helper.link('Messaging', '', {'switch_menu' : 5})}} +

+ {{:helper.link('Back', '', {'switch_menu' : 0})}} +
+ {{else data.screen == 2}} +
+ Shiptments for {{:data.server}} +
+
+ {{for data.requests}} + {{:helper.link("ID: " + value.id + "," + value.item_count + " items", '', {'switch_menu' : 3, 'shipment' : value.ref})}} + {{empty}} + No shipments found. + {{/for}} +

+ {{:helper.link('Back', '', {'switch_menu' : 1})}} +
+ {{else data.screen == 3}} +
+ Shipment #{{:data.id}} +
+
+ {{for data.items}} + {{:value.id}} x{{:value.count}} +
+ {{empty}} + No items were sent.
+ Shipment is empty? + {{/for}} +

+ {{:helper.link('Confirm', '', {'confirm' : 1})}} + {{:helper.link('Deny', '', {'confirm' : 0})}} +
+ {{:helper.link('Back', '', {'switch_menu' : 2})}} +
+ {{else data.screen == 4}} +
+ Sending +
+
+ TODO: Implement. +

+ {{:helper.link('Back', '', {'switch_menu' : 0})}} +
+ {{else data.screen == 5}} +
+ Messaging +
+
+ TODO: Implement. +

+ {{:helper.link('Back', '', {'switch_menu' : 0})}} +
+ {{/if}} +
+{{/if}} diff --git a/vorestation.dme b/vorestation.dme index afb98f80bb..79e1d649e4 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1500,6 +1500,7 @@ #include "code\modules\integrated_electronics\subtypes\trig.dm" #include "code\modules\integrated_electronics\~defines\~defines.dm" #include "code\modules\interserver shipping\_shipping_globals.dm" +#include "code\modules\interserver shipping\computer_yw.dm" #include "code\modules\interserver shipping\shipping_api.dm" #include "code\modules\interserver shipping\shipping_hooks.dm" #include "code\modules\interserver shipping\shipping_requests.dm"