mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-25 17:42:26 +00:00
The infinite loop occured due to the wire datum calling interact() on it's holder, which made it call Interact() on it's wire datum, and so on.
42 lines
1.1 KiB
Plaintext
42 lines
1.1 KiB
Plaintext
/datum/wires/radio
|
|
holder_type = /obj/item/device/radio
|
|
wire_count = 3
|
|
|
|
var/const/WIRE_SIGNAL = 1
|
|
var/const/WIRE_RECEIVE = 2
|
|
var/const/WIRE_TRANSMIT = 4
|
|
|
|
/datum/wires/radio/CanUse(var/mob/living/L)
|
|
var/obj/item/device/radio/R = holder
|
|
if(R.b_stat)
|
|
return 1
|
|
return 0
|
|
|
|
/datum/wires/radio/UpdatePulsed(var/index)
|
|
var/obj/item/device/radio/R = holder
|
|
switch(index)
|
|
if(WIRE_SIGNAL)
|
|
R.listening = !R.listening && !IsIndexCut(WIRE_RECEIVE)
|
|
R.broadcasting = R.listening && !IsIndexCut(WIRE_TRANSMIT)
|
|
|
|
if(WIRE_RECEIVE)
|
|
R.listening = !R.listening && !IsIndexCut(WIRE_SIGNAL)
|
|
|
|
if(WIRE_TRANSMIT)
|
|
R.broadcasting = !R.broadcasting && !IsIndexCut(WIRE_SIGNAL)
|
|
nanomanager.update_uis(holder)
|
|
|
|
/datum/wires/radio/UpdateCut(var/index, var/mended)
|
|
var/obj/item/device/radio/R = holder
|
|
switch(index)
|
|
if(WIRE_SIGNAL)
|
|
R.listening = mended && !IsIndexCut(WIRE_RECEIVE)
|
|
R.broadcasting = mended && !IsIndexCut(WIRE_TRANSMIT)
|
|
|
|
if(WIRE_RECEIVE)
|
|
R.listening = mended && !IsIndexCut(WIRE_SIGNAL)
|
|
|
|
if(WIRE_TRANSMIT)
|
|
R.broadcasting = mended && !IsIndexCut(WIRE_SIGNAL)
|
|
nanomanager.update_uis(holder)
|