mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-07-19 11:02:31 +01:00
e379810a07
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)
|