Files
Aurora.3/code/controllers/Processes/wireless.dm
Loganbacca 56bf894ee1 Wireless button updates
Added toggle variants for buttons, allowing them to "deactivate" connected devices.
Converted flashers and holosigns.
Fixes to keep in line with upstream.
2015-11-22 22:32:52 +13:00

50 lines
1.6 KiB
Plaintext

var/datum/controller/process/wireless/wirelessProcess
/datum/controller/process/wireless
var/list/receiver_list
var/list/pending_connections
var/list/retry_connections
var/list/failed_connections
/datum/controller/process/wireless/setup()
name = "wireless"
schedule_interval = 50
pending_connections = new()
retry_connections = new()
failed_connections = new()
receiver_list = new()
wirelessProcess = src
/datum/controller/process/wireless/proc/add_device(var/datum/wifi/receiver/R)
receiver_list |= R
/datum/controller/process/wireless/proc/remove_device(var/datum/wifi/receiver/R)
receiver_list -= R
/datum/controller/process/wireless/proc/add_request(var/datum/connection_request/C)
pending_connections += C
/datum/controller/process/wireless/doWork()
//process any pending connection requests
if(pending_connections.len > 0)
process_queue(pending_connections, retry_connections)
return //quit here so the retry connection attempt is delayed
//process any connection request waiting to be retried
if(retry_connections.len > 0)
process_queue(retry_connections, failed_connections)
/datum/controller/process/wireless/proc/process_queue(var/list/input_queue, var/list/output_queue)
for(var/datum/connection_request/C in input_queue)
var/target_found = 0
for(var/datum/wifi/receiver/R in receiver_list)
if(R.id == C.target)
var/datum/wifi/sender/S = C.source
S.connect_device(R)
R.connect_device(S)
target_found = 1
input_queue -= C
if(!target_found)
output_queue += C
SCHECK