mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-06 06:52:39 +00:00
[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:
61
code/modules/wiremod/components/ntnet/ntnet_reciever.dm
Normal file
61
code/modules/wiremod/components/ntnet/ntnet_reciever.dm
Normal 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)
|
||||
37
code/modules/wiremod/components/ntnet/ntnet_request.dm
Normal file
37
code/modules/wiremod/components/ntnet/ntnet_request.dm
Normal 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)
|
||||
Reference in New Issue
Block a user