mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-23 13:18:09 +01:00
Interserver shipping update and other changes
This commit is contained in:
@@ -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
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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}}
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user