mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-21 07:32:02 +00:00
Added toggle variants for buttons, allowing them to "deactivate" connected devices. Converted flashers and holosigns. Fixes to keep in line with upstream.
50 lines
1.6 KiB
Plaintext
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
|