mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 23:58:07 +01:00
Adds 3 new NTNet components (#60557)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
#define __NETWORK_BOTS "BOTS"
|
||||
#define __NETWORK_COMPUTER "COMPUTER"
|
||||
#define __NETWORK_CARDS "CARDS"
|
||||
#define __NETWORK_CIRCUITS "CIRCUITS"
|
||||
|
||||
/// Various combined subnetworks
|
||||
#define NETWORK_DOOR_REMOTES NETWORK_NAME_COMBINE(__NETWORK_DOORS, __NETWORK_REMOTES)
|
||||
|
||||
@@ -233,6 +233,16 @@
|
||||
id = "comp_module"
|
||||
build_path = /obj/item/circuit_component/module
|
||||
|
||||
/datum/design/component/ntnet_receive
|
||||
name = "Pressure NTNet Transmitter"
|
||||
id = "comp_ntnet_receive"
|
||||
build_path = /obj/item/circuit_component/ntnet_receive
|
||||
|
||||
/datum/design/component/ntnet_send
|
||||
name = "NTNet Request Component"
|
||||
id = "comp_ntnet_send"
|
||||
build_path = /obj/item/circuit_component/ntnet_send
|
||||
|
||||
/datum/design/component/list_literal
|
||||
name = "List Literal Component"
|
||||
id = "comp_list_literal"
|
||||
|
||||
@@ -219,6 +219,8 @@
|
||||
"comp_module",
|
||||
"comp_multiplexer",
|
||||
"comp_not",
|
||||
"comp_ntnet_receive",
|
||||
"comp_ntnet_send",
|
||||
"comp_pressuresensor",
|
||||
"comp_radio",
|
||||
"comp_random",
|
||||
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -3743,6 +3743,8 @@
|
||||
#include "code\modules\wiremod\components\math\logic.dm"
|
||||
#include "code\modules\wiremod\components\math\not.dm"
|
||||
#include "code\modules\wiremod\components\math\random.dm"
|
||||
#include "code\modules\wiremod\components\ntnet\ntnet_reciever.dm"
|
||||
#include "code\modules\wiremod\components\ntnet\ntnet_request.dm"
|
||||
#include "code\modules\wiremod\components\sensors\pressuresensor.dm"
|
||||
#include "code\modules\wiremod\components\sensors\tempsensor.dm"
|
||||
#include "code\modules\wiremod\components\string\concat.dm"
|
||||
|
||||
Reference in New Issue
Block a user