From 05fa76963e3a69842ac4dce3a8163d4de84ef8d9 Mon Sep 17 00:00:00 2001 From: "rastaf.zero@gmail.com" Date: Fri, 21 Jan 2011 19:20:17 +0000 Subject: [PATCH] Added primitive optimization to radio code. Lag reduced by approx 30% (0.5 seconds of total 1.5 on my system). Some air alarms on the map copypasted from toxins one, with its special settings. Added list of used frequencies and HOW IT WORKS section to communications.dm. Sorry for some engrish. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@895 316c924e-a436-60f5-8080-3fe189b3f50e --- .../components/binary_devices/dp_vent_pump.dm | 4 +- .../components/binary_devices/pump.dm | 4 +- .../components/binary_devices/volume_pump.dm | 4 +- code/ATMOSPHERICS/components/filter.dm | 4 +- .../components/unary/outlet_injector.dm | 4 +- .../components/unary/vent_pump.dm | 14 +- .../components/unary/vent_scrubber.dm | 11 +- code/ATMOSPHERICS/components/valve.dm | 4 +- code/WorkInProgress/computer2/peripherals.dm | 4 +- code/WorkInProgress/pda2/pda2.dm | 4 +- code/game/communications.dm | 177 +++++++++++++++--- code/game/machinery/airlock_control.dm | 20 +- code/game/machinery/alarm.dm | 10 +- code/game/machinery/atmo_control.dm | 12 +- code/game/machinery/atmoalter/meter.dm | 2 +- code/game/machinery/bots/ed209bot.dm | 6 +- code/game/machinery/bots/mulebot.dm | 6 +- code/game/machinery/bots/secbot.dm | 6 +- .../embedded_controller_base.dm | 4 +- code/game/machinery/navbeacon.dm | 4 +- code/game/machinery/status_display.dm | 2 +- code/game/objects/devices/PDA/cart.dm | 2 +- code/game/objects/devices/PDA/radio.dm | 12 +- code/game/objects/radio/radio.dm | 8 +- code/game/prisonshuttle.dm | 2 +- code/game/supplyshuttle.dm | 2 +- maps/tgstation.2.0.0.dmm | 6 +- 27 files changed, 239 insertions(+), 99 deletions(-) diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index 790189675b4..d2fc8cbed43 100644 --- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm @@ -107,10 +107,10 @@ proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) broadcast_status() if(!radio_connection) diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm index 00fcc471504..8b995faa2fe 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm @@ -76,10 +76,10 @@ obj/machinery/atmospherics/binary/pump proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) broadcast_status() if(!radio_connection) diff --git a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm index ae3ff008d8e..32531686567 100644 --- a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm @@ -61,10 +61,10 @@ obj/machinery/atmospherics/binary/volume_pump proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) broadcast_status() if(!radio_connection) diff --git a/code/ATMOSPHERICS/components/filter.dm b/code/ATMOSPHERICS/components/filter.dm index 0d389aa82eb..d5a6d28daf9 100644 --- a/code/ATMOSPHERICS/components/filter.dm +++ b/code/ATMOSPHERICS/components/filter.dm @@ -42,10 +42,10 @@ Filter types: proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) New() ..() diff --git a/code/ATMOSPHERICS/components/unary/outlet_injector.dm b/code/ATMOSPHERICS/components/unary/outlet_injector.dm index 98472faca0e..d59a96eb60b 100644 --- a/code/ATMOSPHERICS/components/unary/outlet_injector.dm +++ b/code/ATMOSPHERICS/components/unary/outlet_injector.dm @@ -67,10 +67,10 @@ proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) broadcast_status() if(!radio_connection) diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index db23bfbcd62..f262f0d8793 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -26,6 +26,8 @@ var/frequency = 1439 var/datum/radio_frequency/radio_connection + var/radio_filter_out + var/radio_filter_in New() var/area/A = get_area(loc) @@ -119,10 +121,10 @@ proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency,radio_filter_in) broadcast_status() if(!radio_connection) @@ -142,13 +144,17 @@ signal.data["external"] = external_pressure_bound signal.data["timestamp"] = air_master.current_cycle - radio_connection.post_signal(src, signal) + radio_connection.post_signal(src, signal, radio_filter_out) return 1 initialize() ..() + + //some vents work his own spesial way + radio_filter_in = frequency==initial(frequency)?(RADIO_FROM_AIRALARM):null + radio_filter_out = frequency==initial(frequency)?(RADIO_TO_AIRALARM):null if(frequency) set_frequency(frequency) update_icon() @@ -227,7 +233,7 @@ if(istype(W, /obj/item/weapon/weldingtool) && W:welding) if (W:get_fuel() < 1) user << "\blue You need more welding fuel to complete this task." - return + return 1 W:use_fuel(1) playsound(src.loc, 'Welder2.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index feae5b68ce5..e59a32eb4ce 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -21,7 +21,8 @@ var/panic = 0 //is this scrubber panicked? var/area_uid - + var/radio_filter_out + var/radio_filter_in New() var/area/A = get_area(loc) if (A.master) @@ -42,9 +43,9 @@ proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency, radio_filter_in) broadcast_status() if(!radio_connection) @@ -63,12 +64,14 @@ signal.data["filter_co2"] = scrub_CO2 signal.data["filter_toxins"] = scrub_Toxins signal.data["filter_n2o"] = scrub_N2O - radio_connection.post_signal(src, signal) + radio_connection.post_signal(src, signal, radio_filter_out) return 1 initialize() ..() + radio_filter_in = frequency==initial(frequency)?(RADIO_FROM_AIRALARM):null + radio_filter_out = frequency==initial(frequency)?(RADIO_TO_AIRALARM):null if (frequency) set_frequency(frequency) diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm index 86b65acccd2..6ba11adc6a6 100644 --- a/code/ATMOSPHERICS/components/valve.dm +++ b/code/ATMOSPHERICS/components/valve.dm @@ -251,10 +251,10 @@ obj/machinery/atmospherics/valve proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) var/frequency = 0 var/id = null diff --git a/code/WorkInProgress/computer2/peripherals.dm b/code/WorkInProgress/computer2/peripherals.dm index 2f22a2d3255..fbbec51a1bd 100644 --- a/code/WorkInProgress/computer2/peripherals.dm +++ b/code/WorkInProgress/computer2/peripherals.dm @@ -56,9 +56,9 @@ proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) receive_command(obj/source, command, datum/signal/signal) if(..()) diff --git a/code/WorkInProgress/pda2/pda2.dm b/code/WorkInProgress/pda2/pda2.dm index 96cd01e4bcf..f77136d1bfe 100644 --- a/code/WorkInProgress/pda2/pda2.dm +++ b/code/WorkInProgress/pda2/pda2.dm @@ -83,7 +83,7 @@ src.host_program.transfer_holder(src.hd) if(radio_controller) - radio_controller.add_object(src, "[frequency]") + radio_controller.add_object(src, frequency) if (src.default_cartridge) @@ -207,7 +207,7 @@ signal.source = src - var/datum/radio_frequency/frequency = radio_controller.return_frequency("[freq]") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq) signal.transmission_method = TRANSMISSION_RADIO if(frequency) diff --git a/code/game/communications.dm b/code/game/communications.dm index c3a5f24ec39..8534f16ebac 100644 --- a/code/game/communications.dm +++ b/code/game/communications.dm @@ -1,77 +1,208 @@ /* -Special frequency list: + HOW IT WORKS + + The radio_controller is a global object maintaining all radio transmissions, think about it as about "ether". + Note that /obj/item/device/radio handles transmission using nonstandard way. + procs: + + add_object(obj/device as obj, var/new_frequency as num, var/filter as num|null = null) + Adds listening object. + parameters: + device - device receiving signals, must have proc receive_signal (see description below). + one device may listen several frequencies, but not same frequency twice. + new_frequency - see possibly frequencies below; + filter - thing for optimization. Optional, but recommended. + All filters should be consolidated in this file, see defines later. + Device without listening filter will receive all signals (on specified frequency). + Device with filter will receive any signals sent without filter. + Device with filter will not receive any signals sent with different filter. + returns: + Reference to frequency object. + + remove_object (obj/device, old_frequency) + Obliviously, after calling this proc, device will not receive any signals on old_frequency. + Other frequencies will left unaffected. + + return_frequency(var/frequency as num) + returns: + Reference to frequency object. Use it if you need to send and do not need to listen. + + radio_frequency is a global object maintaining list of devices that listening specific frequency. + procs: + + post_signal(obj/source as obj|null, datum/signal/signal, var/filter as num|null = null, var/range as num|null = null) + Sends signal to all devices that wants such signal. + parameters: + source - object, emitted signal. Usually, devices will not receive their own signals. + signal - see description below. + filter - described above. + range - radius of regular byond's square circle on that z-level. null means everywhere, on all z-levels. + + obj/proc/receive_signal(datum/signal/signal, var/receive_method as num, var/receive_param) + Handler from received signals. By default does nothing. Define your own for your object. + Avoid of sending signals directly from this proc, use spawn(-1). Do not use sleep() here please. + parameters: + signal - see description below. Extract all needed data from the signal before doing sleep(), spawn() or return! + receive_method - may be TRANSMISSION_WIRE or TRANSMISSION_RADIO. + TRANSMISSION_WIRE is currently unused. + receive_param - for TRANSMISSION_RADIO here comes frequency. + + datum/signal + vars: + source + an object that emitted signal. Used for debug and bearing. + data + list with transmitting data. Usual use pattern: + data["msg"] = "hello world" + encryption + Some number symbolizing "encryption key". + Note that game actually do not use any cryptography here. + If receiving object don't know right key, it must ignore encrypted signal in its receive_signal. + +*/ + +/* +Frequency range: 1200 to 1600 +Radiochat range: 1441 to 1489 + +Radio: +1459 - standard radio chat +1353 - Command +1355 - Medical +1357 - Engineering +1359 - Security +1441 - death squad +1443 - Confession Intercom + +Devices: +1457 - RSD default +1451 - tracking implant + On the map: +1311 for prison shuttle console (in fact, it is not used) 1435 for status displays 1437 for atmospherics/fire alerts 1439 for engine components +1439 for air pumps, air scrubbers, atmo control 1441 for atmospherics - supply tanks 1443 for atmospherics - distribution loop/mixed air tank 1445 for bot nav beacons -1447 for mulebot control -1449 for airlock controls +1447 for mulebot, secbot and ed209 control +1449 for airlock controls, electropack 1451 for toxin lab access 1453 for engineering access 1455 for AI access */ + #define TRANSMISSION_WIRE 0 #define TRANSMISSION_RADIO 1 +/* filters */ +var/const/RADIO_TO_AIRALARM = 1 +var/const/RADIO_FROM_AIRALARM = 2 +var/const/RADIO_CHAT = 3 + var/global/datum/controller/radio/radio_controller datum/controller/radio var/list/datum/radio_frequency/frequencies = list() - proc/add_object(obj/device, new_frequency) - var/datum/radio_frequency/frequency = frequencies[new_frequency] + proc/add_object(obj/device as obj, var/new_frequency as num, var/filter = null as num|null) + var/f_text = num2text(new_frequency) + var/datum/radio_frequency/frequency = frequencies[f_text] if(!frequency) frequency = new frequency.frequency = new_frequency - frequencies[new_frequency] = frequency + frequencies[f_text] = frequency - frequency.devices += device + frequency.add_listener(device, filter) return frequency proc/remove_object(obj/device, old_frequency) - var/datum/radio_frequency/frequency = frequencies[old_frequency] + var/f_text = num2text(old_frequency) + var/datum/radio_frequency/frequency = frequencies[f_text] if(frequency) - frequency.devices -= device + frequency.remove_listener(device) - if(frequency.devices.len < 1) + if(frequency.devices.len == 0) del(frequency) - frequencies -= old_frequency + frequencies -= f_text return 1 - proc/return_frequency(frequency) - return frequencies[frequency] + proc/return_frequency(var/frequency as num) + var/f_text = num2text(frequency) + return frequencies[f_text] datum/radio_frequency - var/frequency - var/list/obj/devices = list() + var/frequency as num + var/list/list/obj/devices = list() proc - post_signal(obj/source, datum/signal/signal, range) + post_signal(obj/source as obj|null, datum/signal/signal, var/filter = null as num|null, var/range = null as num|null) +// var/N=0 +// var/Nt=0 + var/filter_str = num2text(filter) var/turf/start_point if(range) start_point = get_turf(source) if(!start_point) del(signal) return 0 - - for(var/obj/device in devices) - if(device != source) + if (filter && ooc_allowed)//HACK, remove ooc_allowed + var/list/obj/devices_line = devices[filter_str] + for(var/obj/device in devices_line) + if(device == source) + continue if(range) var/turf/end_point = get_turf(device) - if(end_point) - if(max(abs(start_point.x-end_point.x), abs(start_point.y-end_point.y)) <= range) - device.receive_signal(signal, TRANSMISSION_RADIO, frequency) - else + if(!end_point) + continue + //if(max(abs(start_point.x-end_point.x), abs(start_point.y-end_point.y)) <= range) + if(start_point.z!=end_point.z || get_dist(start_point, end_point) > range) + continue + device.receive_signal(signal, TRANSMISSION_RADIO, frequency) + else + for (var/next_filter in devices) +// var/list/obj/DDD = devices[next_filter] +// Nt+=DDD.len + for(var/obj/device in devices[next_filter]) + if(device == source) + continue + if(range) + var/turf/end_point = get_turf(device) + if(!end_point) + continue + //if(max(abs(start_point.x-end_point.x), abs(start_point.y-end_point.y)) <= range) + if(start_point.z!=end_point.z || get_dist(start_point, end_point) > range) + continue device.receive_signal(signal, TRANSMISSION_RADIO, frequency) +// N++ +// log_admin("DEBUG: post_signal(source=[source] ([source.x], [source.y]),filter=[filter]) frequency=[frequency], N=[N],Nt=[Nt]") + + del(signal) + add_listener(obj/device as obj, var/filter as num|null) + //log_admin("add_listener(device=[device],filter=[filter]) frequency=[frequency]") + var/filter_str = num2text(filter) + var/list/obj/devices_line = devices[filter_str] + if (!devices_line) + devices_line = new + devices[filter_str] = devices_line + devices_line+=device +// var/list/obj/devices_line___ = devices[filter_str] +// var/l = devices_line___.len + //log_admin("DEBUG: devices_line.len=[devices_line.len]") + //log_admin("DEBUG: devices(filter_str).len=[l]") + + remove_listener(obj/device) + for (var/devices_filter in devices) + devices[devices_filter]-=device + obj/proc receive_signal(datum/signal/signal, receive_method, receive_param) return null diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm index de5b8d220a5..b0805525fd8 100644 --- a/code/game/machinery/airlock_control.dm +++ b/code/game/machinery/airlock_control.dm @@ -59,7 +59,7 @@ obj/machinery/door/airlock signal.data["door_status"] = density?("closed"):("open") signal.data["lock_status"] = locked?("locked"):("unlocked") - radio_connection.post_signal(src, signal, AIRLOCK_CONTROL_RANGE) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE) open(surpress_send) . = ..() @@ -71,10 +71,10 @@ obj/machinery/door/airlock proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) if(new_frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) initialize() if(frequency) @@ -119,7 +119,7 @@ obj/machinery/airlock_sensor signal.data["tag"] = master_tag signal.data["command"] = "cycle" - radio_connection.post_signal(src, signal, AIRLOCK_CONTROL_RANGE) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE) flick("airlock_sensor_cycle", src) process() @@ -136,15 +136,15 @@ obj/machinery/airlock_sensor signal.data["pressure"] = num2text(pressure) - radio_connection.post_signal(src, signal, AIRLOCK_CONTROL_RANGE) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE) update_icon() proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) initialize() set_frequency(frequency) @@ -183,14 +183,14 @@ obj/machinery/access_button signal.data["tag"] = master_tag signal.data["command"] = command - radio_connection.post_signal(src, signal, AIRLOCK_CONTROL_RANGE) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE) flick("access_button_cycle", src) proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) initialize() set_frequency(frequency) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 6dda692c475..a7e172e9ada 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -38,9 +38,9 @@ var/id_tag = signal.data["tag"] if (!id_tag) return - if (!signal.data["area"] || signal.data["area"] != area_uid) + if (signal.data["area"] != area_uid) return - if((!sensors.Find(id_tag) && !vents.Find(id_tag))) + if((!sensors[id_tag] && !vents[id_tag])) register_env_machine(id_tag, signal.data["device"]) if(signal.data["device"] == "AScr") sensor_information[id_tag] = signal.data @@ -63,9 +63,9 @@ send_signal(m_id, "init", new_name ) set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency, RADIO_TO_AIRALARM) send_signal(var/target, var/command, var/parameter = null)//sends signal 'command' to 'target'. Returns 0 if no radio connection, 1 otherwise @@ -81,7 +81,7 @@ if (parameter) signal.data["parameter"] = parameter - radio_connection.post_signal(src, signal) + radio_connection.post_signal(src, signal, RADIO_FROM_AIRALARM) // world << text("Signal [] Broadcasted to []", command, target) return 1 diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index 50a16090a02..36e0a4f0c56 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -60,9 +60,9 @@ obj/machinery/air_sensor proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) initialize() set_frequency(frequency) @@ -176,9 +176,9 @@ obj/machinery/computer/general_air_control proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) initialize() set_frequency(frequency) @@ -502,9 +502,9 @@ Rate: [volume_rate] L/sec
"} proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[receive_frequency]") + radio_controller.remove_object(src, receive_frequency) receive_frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[receive_frequency]") + radio_connection = radio_controller.add_object(src, receive_frequency) attack_hand(mob/user) diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm index bea2bcf9ee2..7cb79613de3 100644 --- a/code/game/machinery/atmoalter/meter.dm +++ b/code/game/machinery/atmoalter/meter.dm @@ -37,7 +37,7 @@ icon_state = "meter4" if(frequency) - var/datum/radio_frequency/radio_connection = radio_controller.return_frequency("[frequency]") + var/datum/radio_frequency/radio_connection = radio_controller.return_frequency(frequency) if(!radio_connection) return diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index 8a2af780311..31e2a104e8a 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -80,8 +80,8 @@ src.cam.c_tag = src.name src.cam.network = "SS13" if(radio_controller) - radio_controller.add_object(src, "[control_freq]") - radio_controller.add_object(src, "[beacon_freq]") + radio_controller.add_object(src, control_freq) + radio_controller.add_object(src, beacon_freq) examine() set src in view() @@ -546,7 +546,7 @@ Auto Patrol: []"}, // send a radio signal with multiple data key/values proc/post_signal_multiple(var/freq, var/list/keyval) - var/datum/radio_frequency/frequency = radio_controller.return_frequency("[freq]") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq) if(!frequency) return diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index 62d711b3539..c14ee1a06d5 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -80,8 +80,8 @@ spawn(5) // must wait for map loading to finish if(radio_controller) - radio_controller.add_object(src, "[control_freq]") - radio_controller.add_object(src, "[beacon_freq]") + radio_controller.add_object(src, control_freq) + radio_controller.add_object(src, beacon_freq) var/count = 0 for(var/obj/machinery/bot/mulebot/other in world) @@ -881,7 +881,7 @@ if(freq == control_freq && !(wires & wire_remote_tx)) return - var/datum/radio_frequency/frequency = radio_controller.return_frequency("[freq]") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq) if(!frequency) return diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index f34c6bcc208..035dabdab89 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -80,8 +80,8 @@ src.cam.c_tag = src.name src.cam.network = "SS13" if(radio_controller) - radio_controller.add_object(src, "[control_freq]") - radio_controller.add_object(src, "[beacon_freq]") + radio_controller.add_object(src, control_freq) + radio_controller.add_object(src, beacon_freq) examine() set src in view() @@ -525,7 +525,7 @@ Auto Patrol: []"}, // send a radio signal with multiple data key/values proc/post_signal_multiple(var/freq, var/list/keyval) - var/datum/radio_frequency/frequency = radio_controller.return_frequency("[freq]") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq) if(!frequency) return diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index f1b6466796c..5032e479b86 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -77,6 +77,6 @@ obj/machinery/embedded_controller proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") \ No newline at end of file + radio_connection = radio_controller.add_object(src, frequency) \ No newline at end of file diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 91813b6ee8b..85ac6339178 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -30,7 +30,7 @@ spawn(5) // must wait for map loading to finish if(radio_controller) - radio_controller.add_object(src, "[freq]") + radio_controller.add_object(src, freq) // set the transponder codes assoc list from codes_txt proc/set_codes() @@ -84,7 +84,7 @@ proc/post_signal() - var/datum/radio_frequency/frequency = radio_controller.return_frequency("[freq]") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq) if(!frequency) return diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index b9eecb11227..3a6cdb86f1e 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -39,7 +39,7 @@ ..() spawn(5) // must wait for map loading to finish if(radio_controller) - radio_controller.add_object(src, "[frequency]") + radio_controller.add_object(src, frequency) // timed process diff --git a/code/game/objects/devices/PDA/cart.dm b/code/game/objects/devices/PDA/cart.dm index 41aee865a3a..ae2e73c36ea 100644 --- a/code/game/objects/devices/PDA/cart.dm +++ b/code/game/objects/devices/PDA/cart.dm @@ -145,7 +145,7 @@ proc/post_status(var/command, var/data1, var/data2) - var/datum/radio_frequency/frequency = radio_controller.return_frequency("1435") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(1435) if(!frequency) return diff --git a/code/game/objects/devices/PDA/radio.dm b/code/game/objects/devices/PDA/radio.dm index 1ea29cd0ae2..5f33c01c5a7 100644 --- a/code/game/objects/devices/PDA/radio.dm +++ b/code/game/objects/devices/PDA/radio.dm @@ -16,7 +16,7 @@ proc/post_signal(var/freq, var/key, var/value, var/key2, var/value2, var/key3, var/value3) //world << "Post: [freq]: [key]=[value], [key2]=[value2]" - var/datum/radio_frequency/frequency = radio_controller.return_frequency("[freq]") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq) if(!frequency) return @@ -56,7 +56,7 @@ ..() spawn(5) if(radio_controller) - radio_controller.add_object(src, "[control_freq]") + radio_controller.add_object(src, control_freq) // receive radio signals // can detect bot status signals @@ -124,8 +124,8 @@ ..() spawn(5) if(radio_controller) - radio_controller.add_object(src, "[control_freq]") - radio_controller.add_object(src, "[beacon_freq]") + radio_controller.add_object(src, control_freq) + radio_controller.add_object(src, beacon_freq) spawn(10) post_signal(beacon_freq, "findbeacon", "delivery") @@ -236,9 +236,9 @@ set_frequency(frequency) proc/set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) proc/send_signal(message="ACTIVATE") diff --git a/code/game/objects/radio/radio.dm b/code/game/objects/radio/radio.dm index 1915b329490..d63c3437079 100644 --- a/code/game/objects/radio/radio.dm +++ b/code/game/objects/radio/radio.dm @@ -13,7 +13,7 @@ set_frequency(frequency) if(src.secure_frequency) - secure_radio_connection = radio_controller.add_object(src, "[secure_frequency]") + secure_radio_connection = radio_controller.add_object(src, secure_frequency, RADIO_CHAT) /obj/item/device/radio var/datum/radio_frequency/radio_connection @@ -21,9 +21,9 @@ proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT) /obj/item/device/radio/attack_self(mob/user as mob) user.machine = src @@ -170,7 +170,7 @@ Frequency: var/list/receive = list() //for (var/obj/item/device/radio/R in radio_connection.devices) - for (var/obj/item/device/radio/R in connection.devices) // Modified for security headset code -- TLE + for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"]) // Modified for security headset code -- TLE if(R.accept_rad(src, message)) for (var/i in R.send_hear()) if (!(i in receive)) diff --git a/code/game/prisonshuttle.dm b/code/game/prisonshuttle.dm index 077a508c803..2149051bcbf 100644 --- a/code/game/prisonshuttle.dm +++ b/code/game/prisonshuttle.dm @@ -215,7 +215,7 @@ var/prison_shuttle_timeleft = 0 /obj/machinery/computer/prison_shuttle/proc/post_signal(var/command) - var/datum/radio_frequency/frequency = radio_controller.return_frequency("1311") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(1311) if(!frequency) return diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index a34a646e84d..a09ed6ff1a0 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -488,7 +488,7 @@ var/ordernum=0 /obj/machinery/computer/supplycomp/proc/post_signal(var/command) - var/datum/radio_frequency/frequency = radio_controller.return_frequency("1435") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(1435) if(!frequency) return diff --git a/maps/tgstation.2.0.0.dmm b/maps/tgstation.2.0.0.dmm index aa8c49103e7..25a62c24d7e 100644 --- a/maps/tgstation.2.0.0.dmm +++ b/maps/tgstation.2.0.0.dmm @@ -397,7 +397,7 @@ "ahG" = (/obj/landmark{name = "carpspawn"},/turf/space,/area) "ahH" = (/obj/machinery/atmospherics/pipe/simple{dir = 6; icon_state = "intact-f"; layer = 3},/obj/lattice,/turf/space,/area) "ahI" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; layer = 3},/turf/simulated/wall/r_wall,/area/security/warden) -"ahJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/deployable/barrier,/obj/machinery/alarm{icon_state = "alarm0"; dir = 4; pixel_x = -23; pixel_y = 0; frequency = 1445; sensors = list("tox_main_scrub_1" = "Toxin Lab Scrubber #1", "tox_main_scrub_2" = "Toxin Lab Scrubber #2", "tox_storage_scrub" = "Toxin Storage Scrubber", "tox_chem_scrub" = "Toxin Chemical Lab Scrubber")},/turf/simulated/floor,/area/security/warden) +"ahJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/deployable/barrier,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor,/area/security/warden) "ahK" = (/obj/table{icon_state = "tabledir"; dir = 6},/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor,/area/security/hos) "ahL" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/clothing/glasses/thermal,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor,/area/security/hos) "ahM" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/weapon/stamp/hos,/turf/simulated/floor,/area/security/hos) @@ -2599,7 +2599,7 @@ "aXY" = (/obj/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "aXZ" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "aYa" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/camera{c_tag = "Bar North"; dir = 2; network = "SS13"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) -"aYb" = (/obj/machinery/alarm{dir = 2; frequency = 1445; icon_state = "alarm0"; pixel_y = 24; sensors = list("tox_main_scrub_1" = "Toxin Lab Scrubber #1", "tox_main_scrub_2" = "Toxin Lab Scrubber #2", "tox_storage_scrub" = "Toxin Storage Scrubber", "tox_chem_scrub" = "Toxin Chemical Lab Scrubber")},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) +"aYb" = (/obj/machinery/alarm{dir = 2; pixel_y = 24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "aYc" = (/obj/noticeboard{pixel_y = 27},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "aYd" = (/obj/machinery/power/apc{dir = 4; name = "Bar APC"; pixel_x = 25; pixel_y = 0},/obj/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "aYe" = (/turf/simulated/wall,/area/crew_quarters/bar) @@ -2674,7 +2674,7 @@ "aZv" = (/turf/space,/area/supply/station) "aZw" = (/obj/grille,/obj/window/reinforced/east,/obj/window/reinforced/west,/obj/window/reinforced/north,/turf/simulated/floor/plating,/area/quartermaster/storage) "aZx" = (/turf/simulated/floor{tag = "icon-caution_west"; icon_state = "caution_west"},/area/quartermaster/storage) -"aZy" = (/obj/machinery/alarm{dir = 2; frequency = 1445; icon_state = "alarm0"; pixel_y = 24; sensors = list("tox_main_scrub_1" = "Toxin Lab Scrubber #1", "tox_main_scrub_2" = "Toxin Lab Scrubber #2", "tox_storage_scrub" = "Toxin Storage Scrubber", "tox_chem_scrub" = "Toxin Chemical Lab Scrubber")},/turf/simulated/floor,/area/quartermaster/storage) +"aZy" = (/obj/machinery/alarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/quartermaster/storage) "aZz" = (/obj/machinery/light{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "aZA" = (/obj/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/quartermaster/storage) "aZB" = (/obj/table{icon_state = "tabledir"; dir = 5},/turf/simulated/floor,/area/quartermaster/office)