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
This commit is contained in:
rastaf.zero@gmail.com
2011-01-21 19:20:17 +00:00
parent a63ea22e7c
commit 05fa76963e
27 changed files with 239 additions and 99 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)