Files
Aurora.3/code/datums/components/local_network.dm
Matt Atlas e063223199 Fixes the exosuit mounted autolathe. (#18440)
* autolathe1

* cl

* Oops

* pay the price

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
2024-02-20 11:58:39 +00:00

96 lines
3.4 KiB
Plaintext

/datum/component/local_network_member
var/id_tag
/datum/component/local_network_member/Destroy()
if(parent)
var/datum/local_network/lan = get_local_network()
if(lan)
lan.remove_device(parent)
. = ..()
/datum/component/local_network_member/Initialize(initial_id_tag)
if(initial_id_tag)
set_tag(null, initial_id_tag)
/datum/component/local_network_member/proc/set_tag(mob/user, new_ident)
if(id_tag == new_ident)
to_chat(user, SPAN_WARNING("\The [parent] is already part of the [new_ident] local network."))
return FALSE
if(id_tag)
var/datum/local_network/old_lan = GLOB.local_networks[id_tag]
if(old_lan)
if(!old_lan.remove_device(parent))
to_chat(user, SPAN_WARNING("You encounter an error when trying to unregister \the [parent] from the [id_tag] local network."))
return FALSE
to_chat(user, SPAN_NOTICE("You unregister \the [parent] from the [id_tag] local network."))
var/datum/local_network/lan = GLOB.local_networks[new_ident]
if(!lan)
lan = new(new_ident)
lan.add_device(parent)
to_chat(user, SPAN_NOTICE("You create a new [new_ident] local network and register \the [parent] with it."))
else if(lan.within_radius(parent))
lan.add_device(parent)
to_chat(user, SPAN_NOTICE("You register \the [parent] with the [new_ident] local network."))
else
to_chat(user, SPAN_WARNING("\The [parent] is out of range of the [new_ident] local network."))
return FALSE
id_tag = new_ident
return TRUE
/datum/component/local_network_member/proc/get_local_network()
var/datum/local_network/lan = id_tag ? GLOB.local_networks[id_tag] : null
if(lan && !lan.within_radius(parent))
lan.remove_device(parent)
id_tag = null
lan = null
return lan
/datum/component/local_network_member/nano_host()
if(parent)
return parent.nano_host()
. = ..()
/datum/component/local_network_member/proc/get_new_tag(mob/user)
var/new_ident = input(user, "Enter a new ident tag.", "[parent]", id_tag) as null|text
if(new_ident && parent && user.Adjacent(parent) && CanInteract(user, GLOB.physical_state))
return set_tag(user, new_ident)
//
/datum/component/local_network_member/multilevel/set_tag(mob/user, new_ident)
if(id_tag == new_ident)
to_chat(user, SPAN_WARNING("\The [parent] is already part of the [new_ident] local network."))
return FALSE
if(id_tag)
var/datum/local_network/multilevel/old_lan = GLOB.multilevel_local_networks[id_tag]
if(old_lan)
if(!old_lan.remove_device(parent))
to_chat(user, SPAN_WARNING("You encounter an error when trying to unregister \the [parent] from the [id_tag] local network."))
return FALSE
to_chat(user, SPAN_NOTICE("You unregister \the [parent] from the [id_tag] local network."))
var/datum/local_network/multilevel/lan = GLOB.multilevel_local_networks[new_ident]
if(!lan)
lan = new(new_ident)
lan.add_device(parent)
to_chat(user, SPAN_NOTICE("You create a new [new_ident] local network and register \the [parent] with it."))
else if(lan.within_radius(parent))
lan.add_device(parent)
to_chat(user, SPAN_NOTICE("You register \the [parent] with the [new_ident] local network."))
else
to_chat(user, SPAN_WARNING("\The [parent] is out of range of the [new_ident] local network."))
return FALSE
id_tag = new_ident
return TRUE
/datum/component/local_network_member/multilevel/get_local_network()
var/datum/local_network/multilevel/lan = id_tag ? GLOB.multilevel_local_networks[id_tag] : null
if(lan && !lan.within_radius(parent))
lan.remove_device(parent)
id_tag = null
lan = null
return lan