[MIRROR] Adds 3 new NTNet components (#7546)

* Adds 3 new NTNet components (#60557)

Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>

* Adds 3 new NTNet components

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
This commit is contained in:
SkyratBot
2021-08-16 00:11:26 +02:00
committed by GitHub
parent a1c7bd4bae
commit 430d8712ee
6 changed files with 113 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
/**
* # NTNet Reciever Component
*
* Recieves data through NTNet.
*/
/obj/item/circuit_component/ntnet_receive
display_name = "NTNet Receiver"
desc = "Recieves data packages through NTNet. If Encryption Key is set then only signals with the same Encryption Key will be received."
circuit_flags = CIRCUIT_FLAG_OUTPUT_SIGNAL //trigger_output
network_id = __NETWORK_CIRCUITS
var/datum/port/input/push_hid
var/datum/port/output/hid
var/datum/port/output/data_package
var/datum/port/output/secondary_package
var/datum/port/input/enc_key
var/datum/port/input/option/data_type_options
var/datum/port/input/option/secondary_data_type_options
/obj/item/circuit_component/ntnet_receive/Initialize()
. = ..()
AddComponent(/datum/component/ntnet_interface)
data_package = add_output_port("Data Package", PORT_TYPE_ANY)
secondary_package = add_output_port("Secondary Package", PORT_TYPE_ANY)
enc_key = add_input_port("Encryption Key", PORT_TYPE_STRING)
RegisterSignal(src, COMSIG_COMPONENT_NTNET_RECEIVE, .proc/ntnet_receive)
/obj/item/circuit_component/ntnet_receive/populate_options()
var/static/component_options = list(
PORT_TYPE_ANY,
PORT_TYPE_STRING,
PORT_TYPE_NUMBER,
PORT_TYPE_LIST,
PORT_TYPE_ATOM,
)
data_type_options = add_option_port("Data Type", component_options)
secondary_data_type_options = add_option_port("Secondary Data Type", component_options)
/obj/item/circuit_component/ntnet_receive/input_received(datum/port/input/port)
. = ..()
if(.)
return
if(COMPONENT_TRIGGERED_BY(data_type_options, port))
data_package.set_datatype(data_type_options.input_value)
if(COMPONENT_TRIGGERED_BY(secondary_data_type_options, port))
secondary_package.set_datatype(secondary_data_type_options.input_value)
/obj/item/circuit_component/ntnet_receive/proc/ntnet_receive(datum/source, datum/netdata/data)
SIGNAL_HANDLER
if(data.data["enc_key"] != enc_key.input_value)
return
data_package.set_output(data.data["data"])
secondary_package.set_output(data.data["data_secondary"])
trigger_output.set_output(COMPONENT_SIGNAL)

View File

@@ -0,0 +1,37 @@
/**
* # NTNet Transmitter Component
*
* Sends a data package through NTNet
*/
/obj/item/circuit_component/ntnet_send
display_name = "NTNet Transmitter"
desc = "Sends a data package through NTNet when triggered. If target HID is not provided, data will be sent to all circuits in the network. If Encryption Key is set then transmitted data will be only picked up by receivers with the same Encryption Key."
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL
network_id = __NETWORK_CIRCUITS
var/datum/port/input/data_package
var/datum/port/input/secondary_package
var/datum/port/input/enc_key
/obj/item/circuit_component/ntnet_send/Initialize()
. = ..()
data_package = add_input_port("Data Package", PORT_TYPE_ANY)
secondary_package = add_input_port("Secondary Package", PORT_TYPE_ANY)
enc_key = add_input_port("Encryption Key", PORT_TYPE_STRING)
/obj/item/circuit_component/ntnet_send/input_received(datum/port/input/port)
. = ..()
if(. || !data_package.input_value)
return
var/list/datalist = list("data" = data_package.input_value)
if(secondary_package.input_value)
datalist["data_secondary"] = secondary_package.input_value
if(enc_key.input_value)
datalist["enc_key"] = enc_key.input_value
var/datum/netdata/data = new(datalist)
data.receiver_id = __NETWORK_CIRCUITS
ntnet_send(data)