mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-30 19:41:56 +00:00
* Unicode support Part 2 -- copytext() This is the transition of all copytext() calls to be unicode aware and also some nearby calls in the same functions. Most things are just replacing copytext() with copytext_char() as a terrible character limiter but a few others were slightly more involved. I replaced a ton of ```` var/something = sanitize(input()) something = copytext(something, 1, MAX_MESSAGE_LEN) ```` with a single stripped_input() call. stripped_input() already calls html_encode(), trim(), and some other sanitization so there shouldn't be any major issues there. This is still VERY rough btw; DNA is a mess, the status displays are complete ass, there's a copytext() in code\datums\shuttles.dm that I'm not sure what to do with, and I didn't touch anything in the tools folder. I haven't tested this much at all yet, I only got it to compile earlier this morning. There's also likely to be weird bugs until I get around to fixing length(), findtext(), and the rest of the string procs. * Makes the code functional * Assume color hex strings are always # followed by ascii. Properly encodes and decodes the stuff in mob_helpers.dm which fixes some issues there. * Removes ninjaspeak since it's unused
52 lines
1.9 KiB
Plaintext
52 lines
1.9 KiB
Plaintext
PROCESSING_SUBSYSTEM_DEF(networks)
|
|
name = "Networks"
|
|
priority = FIRE_PRIORITY_NETWORKS
|
|
wait = 1
|
|
stat_tag = "NET"
|
|
flags = SS_KEEP_TIMING
|
|
init_order = INIT_ORDER_NETWORKS
|
|
var/datum/ntnet/station/station_network
|
|
var/assignment_hardware_id = HID_RESTRICTED_END
|
|
var/list/networks_by_id = list() //id = network
|
|
var/list/interfaces_by_id = list() //hardware id = component interface
|
|
var/resolve_collisions = TRUE
|
|
|
|
/datum/controller/subsystem/processing/networks/Initialize()
|
|
station_network = new
|
|
station_network.register_map_supremecy()
|
|
. = ..()
|
|
|
|
/datum/controller/subsystem/processing/networks/proc/register_network(datum/ntnet/network)
|
|
if(!networks_by_id[network.network_id])
|
|
networks_by_id[network.network_id] = network
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/datum/controller/subsystem/processing/networks/proc/unregister_network(datum/ntnet/network)
|
|
networks_by_id -= network.network_id
|
|
return TRUE
|
|
|
|
/datum/controller/subsystem/processing/networks/proc/register_interface(datum/component/ntnet_interface/D)
|
|
if(!interfaces_by_id[D.hardware_id])
|
|
interfaces_by_id[D.hardware_id] = D
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/datum/controller/subsystem/processing/networks/proc/unregister_interface(datum/component/ntnet_interface/D)
|
|
interfaces_by_id -= D.hardware_id
|
|
return TRUE
|
|
|
|
/datum/controller/subsystem/processing/networks/proc/get_next_HID()
|
|
var/string = "[num2text(assignment_hardware_id++, 12)]"
|
|
return make_address(string)
|
|
|
|
/datum/controller/subsystem/processing/networks/proc/make_address(string)
|
|
if(!string)
|
|
return resolve_collisions? make_address("[num2text(rand(HID_RESTRICTED_END, 999999999), 12)]"):null
|
|
var/hex = md5(string)
|
|
if(!hex)
|
|
return //errored
|
|
. = "[copytext_char(hex, 1, 9)]" //16 ^ 8 possibilities I think.
|
|
if(interfaces_by_id[.])
|
|
return resolve_collisions? make_address("[num2text(rand(HID_RESTRICTED_END, 999999999), 12)]"):null
|