Interserver shipping update and other changes

This commit is contained in:
Kelshark
2017-03-03 19:13:06 -05:00
parent fd626b4d70
commit b5d239c42f
5 changed files with 276 additions and 6 deletions
+3
View File
@@ -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)
@@ -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
+9 -6
View File
@@ -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)
+87
View File
@@ -0,0 +1,87 @@
{{if data.error == 1}}
<div class="item">
<div class="itemLabel">
ERROR
</div>
<div class="itemContent">
{{:data.error_msg}}
<br><br>
{{:helper.link('Return', '', {'switch_menu' : 0}, 'selected')}}
</div>
</div>
{{else}}
<div class="item">
{{if data.screen == 0}}
<div class="itemLabel">
Available Stations
</div>
<div class="itemContent">
{{for data.servers}}
{{:helper.link(value.name, '', {'select_station' : value.ref})}}
{{empty}}
No stations located.
{{/for}}
</div>
{{else data.screen == 1}}
<div class="itemLabel">
Options for {{:data.server}}
</div>
<div class="itemContent">
{{:helper.link('Send Shipment', '', {'switch_menu' : 4})}}
{{:helper.link('Receive Shipments (' + data.requests + ')', '', {'switch_menu' : 2})}}
{{:helper.link('Messaging', '', {'switch_menu' : 5})}}
<br><br>
{{:helper.link('Back', '', {'switch_menu' : 0})}}
</div>
{{else data.screen == 2}}
<div class="itemLabel">
Shiptments for {{:data.server}}
</div>
<div class="itemContent">
{{for data.requests}}
{{:helper.link("ID: " + value.id + "," + value.item_count + " items", '', {'switch_menu' : 3, 'shipment' : value.ref})}}
{{empty}}
<b>No shipments found.</b>
{{/for}}
<br><br>
{{:helper.link('Back', '', {'switch_menu' : 1})}}
</div>
{{else data.screen == 3}}
<div class="itemLabel">
Shipment #{{:data.id}}
</div>
<div class="itemContent">
{{for data.items}}
<b>{{:value.id}}</b> x{{:value.count}}
<br>
{{empty}}
<b>No items were sent.</b><br>
Shipment is empty?
{{/for}}
<br><br>
{{:helper.link('Confirm', '', {'confirm' : 1})}}
{{:helper.link('Deny', '', {'confirm' : 0})}}
<br>
{{:helper.link('Back', '', {'switch_menu' : 2})}}
</div>
{{else data.screen == 4}}
<div class="itemLabel">
Sending
</div>
<div class="itemContent">
TODO: Implement.
<br><br>
{{:helper.link('Back', '', {'switch_menu' : 0})}}
</div>
{{else data.screen == 5}}
<div class="itemLabel">
Messaging
</div>
<div class="itemContent">
TODO: Implement.
<br><br>
{{:helper.link('Back', '', {'switch_menu' : 0})}}
</div>
{{/if}}
</div>
{{/if}}
+1
View File
@@ -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"