mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
* Delete integrated_circuit.dm * Delete integrated_electronics.dm * Delete pins.dm * Delete wirer.dm * Delete helpers.dm * Delete printer.dm * Delete analyzer.dm * Delete debugger.dm * Delete detailer.dm * Delete assemblies.dm * Delete saved_circuits.dm * Delete boolean_pin.dm * Delete char_pin.dm * Delete color_pin.dm * Delete dir_pin.dm * Delete index_pin.dm * Delete list_pin.dm * Delete number_pin.dm * Delete ref_pin.dm * Delete selfref_pin.dm * Delete string_pin.dm * Delete passive.dm * Delete power.dm * Delete access.dm * Delete arithmetic.dm * Delete converters.dm * Delete data_transfer.dm * Delete input.dm * Delete lists.dm * Delete logic.dm * Delete manipulation.dm * Delete memory.dm * Delete output.dm * Delete power.dm * Delete reagents.dm * Delete smart.dm * Delete text.dm * Delete time.dm * Delete trig.dm * Update tgstation.dme * Update multitool.dm * Delete circuit.dm * Update tgstation.dme * Update netdata.dm * Update ntnet_interface.dm * stuff * Update packs.dm * Update electronics_designs.dm * Update electronics_designs.dm * Update multitool.dm * Update cavity_implant.dm * Update cards_ids.dm * Update walls.dm * Update hostile.dm * Update all_nodes.dm * removes circuits from maps * Revert "removes circuits from maps" This reverts commit 14daf7770220a8a1d7a8fa497c92d9c866939160. * Removes circuits lab from all maps * removes circuits lab from lavaland syndicate base * fixes space tiles under windows on meta * Deltastation fixes * Update multitool.dm * Update flavor_misc.dm * Replaces Box circuits with nanites
67 lines
2.5 KiB
Plaintext
67 lines
2.5 KiB
Plaintext
//Thing meant for allowing datums and objects to access a NTnet network datum.
|
|
/datum/proc/ntnet_receive(datum/netdata/data)
|
|
return
|
|
|
|
/datum/proc/ntnet_receive_broadcast(datum/netdata/data)
|
|
return
|
|
|
|
/datum/proc/ntnet_send(datum/netdata/data, netid)
|
|
GET_COMPONENT(NIC, /datum/component/ntnet_interface)
|
|
if(!NIC)
|
|
return FALSE
|
|
return NIC.__network_send(data, netid)
|
|
|
|
/datum/component/ntnet_interface
|
|
var/hardware_id //text. this is the true ID. do not change this. stuff like ID forgery can be done manually.
|
|
var/network_name = "" //text
|
|
var/list/networks_connected_by_id = list() //id = datum/ntnet
|
|
var/differentiate_broadcast = TRUE //If false, broadcasts go to ntnet_receive. NOT RECOMMENDED.
|
|
|
|
/datum/component/ntnet_interface/Initialize(force_name = "NTNet Device", autoconnect_station_network = TRUE) //Don't force ID unless you know what you're doing!
|
|
hardware_id = "[SSnetworks.get_next_HID()]"
|
|
network_name = force_name
|
|
if(!SSnetworks.register_interface(src))
|
|
. = COMPONENT_INCOMPATIBLE
|
|
CRASH("Unable to register NTNet interface. Interface deleted.")
|
|
if(autoconnect_station_network)
|
|
register_connection(SSnetworks.station_network)
|
|
|
|
/datum/component/ntnet_interface/Destroy()
|
|
unregister_all_connections()
|
|
SSnetworks.unregister_interface(src)
|
|
return ..()
|
|
|
|
/datum/component/ntnet_interface/proc/__network_receive(datum/netdata/data) //Do not directly proccall!
|
|
SEND_SIGNAL(parent, COMSIG_COMPONENT_NTNET_RECEIVE, data)
|
|
if(differentiate_broadcast && data.broadcast)
|
|
parent.ntnet_receive_broadcast(data)
|
|
else
|
|
parent.ntnet_receive(data)
|
|
|
|
/datum/component/ntnet_interface/proc/__network_send(datum/netdata/data, netid) //Do not directly proccall!
|
|
|
|
if(netid)
|
|
if(networks_connected_by_id[netid])
|
|
var/datum/ntnet/net = networks_connected_by_id[netid]
|
|
return net.process_data_transmit(src, data)
|
|
return FALSE
|
|
for(var/i in networks_connected_by_id)
|
|
var/datum/ntnet/net = networks_connected_by_id[i]
|
|
net.process_data_transmit(src, data)
|
|
return TRUE
|
|
|
|
/datum/component/ntnet_interface/proc/register_connection(datum/ntnet/net)
|
|
if(net.interface_connect(src))
|
|
networks_connected_by_id[net.network_id] = net
|
|
return TRUE
|
|
|
|
/datum/component/ntnet_interface/proc/unregister_all_connections()
|
|
for(var/i in networks_connected_by_id)
|
|
unregister_connection(networks_connected_by_id[i])
|
|
return TRUE
|
|
|
|
/datum/component/ntnet_interface/proc/unregister_connection(datum/ntnet/net)
|
|
net.interface_disconnect(src)
|
|
networks_connected_by_id -= net.network_id
|
|
return TRUE
|