mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 21:48:39 +01:00
[MIRROR] Don't update radio icon unless necessary, don't create radios in vending machines until needed -- Saves 0.091s of init time [MDB IGNORE] (#17943)
* Don't update radio icon unless necessary, don't create radios in vending machines until needed -- Saves 0.091s of init time * Update code/modules/vending/_vending.dm Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
This commit is contained in:
co-authored by
Mothblocks
Tom
parent
185cfc6996
commit
6074568bbc
@@ -84,6 +84,13 @@
|
||||
/// overlay when speaking a message (is displayed simultaniously with speaker_active)
|
||||
var/overlay_mic_active = "m_active"
|
||||
|
||||
/// When set to FALSE, will avoid calling update_icon() in set_broadcasting and co.
|
||||
/// Used to save time on updating icon several times over initialization.
|
||||
VAR_PRIVATE/perform_update_icon = TRUE
|
||||
|
||||
/// If TRUE, will set the icon in initializations.
|
||||
VAR_PRIVATE/should_update_icon = FALSE
|
||||
|
||||
/obj/item/radio/Initialize(mapload)
|
||||
wires = new /datum/wires/radio(src)
|
||||
secure_radio_connections = list()
|
||||
@@ -94,10 +101,15 @@
|
||||
for(var/ch_name in channels)
|
||||
secure_radio_connections[ch_name] = add_radio(src, GLOB.radiochannels[ch_name])
|
||||
|
||||
perform_update_icon = FALSE
|
||||
set_listening(listening)
|
||||
set_broadcasting(broadcasting)
|
||||
set_frequency(sanitize_frequency(frequency, freerange, syndie))
|
||||
set_on(on)
|
||||
perform_update_icon = TRUE
|
||||
|
||||
if (should_update_icon)
|
||||
update_appearance(UPDATE_ICON)
|
||||
|
||||
AddElement(/datum/element/empprotection, EMP_PROTECT_WIRES)
|
||||
|
||||
@@ -200,7 +212,11 @@
|
||||
readd_listening_radio_channels()
|
||||
else if(!listening)
|
||||
remove_radio_all(src)
|
||||
update_icon()
|
||||
|
||||
if (perform_update_icon && !isnull(overlay_speaker_idle))
|
||||
update_icon()
|
||||
else if (!perform_update_icon)
|
||||
should_update_icon = TRUE
|
||||
|
||||
/**
|
||||
* setter for broadcasting that makes us not hearing sensitive if not broadcasting and hearing sensitive if broadcasting
|
||||
@@ -219,7 +235,11 @@
|
||||
become_hearing_sensitive(INNATE_TRAIT)
|
||||
else if(!broadcasting)
|
||||
lose_hearing_sensitivity(INNATE_TRAIT)
|
||||
update_icon()
|
||||
|
||||
if (perform_update_icon && !isnull(overlay_mic_idle))
|
||||
update_icon()
|
||||
else if (!perform_update_icon)
|
||||
should_update_icon = TRUE
|
||||
|
||||
///setter for the on var that sets both broadcasting and listening to off or whatever they were supposed to be
|
||||
/obj/item/radio/proc/set_on(new_on)
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
var/light_mask
|
||||
|
||||
/// used for narcing on underages
|
||||
var/obj/item/radio/Radio
|
||||
var/obj/item/radio/sec_radio
|
||||
|
||||
|
||||
/**
|
||||
@@ -226,14 +226,12 @@
|
||||
circuit.onstation = onstation //sync up the circuit so the pricing schema is carried over if it's reconstructed.
|
||||
else if(circuit && (circuit.onstation != onstation)) //check if they're not the same to minimize the amount of edited values.
|
||||
onstation = circuit.onstation //if it was constructed outside mapload, sync the vendor up with the circuit's var so you can't bypass price requirements by moving / reconstructing it off station.
|
||||
Radio = new /obj/item/radio(src)
|
||||
Radio.set_listening(FALSE)
|
||||
|
||||
/obj/machinery/vending/Destroy()
|
||||
QDEL_NULL(wires)
|
||||
QDEL_NULL(coin)
|
||||
QDEL_NULL(bill)
|
||||
QDEL_NULL(Radio)
|
||||
QDEL_NULL(sec_radio)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/vending/can_speak()
|
||||
@@ -1068,8 +1066,11 @@ GLOBAL_LIST_EMPTY(vending_products)
|
||||
else if(age_restrictions && R.age_restricted && (!C.registered_age || C.registered_age < AGE_MINOR))
|
||||
say("You are not of legal age to purchase [R.name].")
|
||||
if(!(usr in GLOB.narcd_underages))
|
||||
Radio.set_frequency(FREQ_SECURITY)
|
||||
Radio.talk_into(src, "SECURITY ALERT: [usr] recorded attempting to purchase [R.name] in [get_area(src)]. Please watch for substance abuse.", FREQ_SECURITY) //SKYRAT EDIT CHANGE
|
||||
if (isnull(sec_radio))
|
||||
sec_radio = new
|
||||
sec_radio.set_listening(FALSE)
|
||||
sec_radio.set_frequency(FREQ_SECURITY)
|
||||
sec_radio.talk_into(src, "SECURITY ALERT: [usr] recorded attempting to purchase [R.name] in [get_area(src)]. Please watch for substance abuse.", FREQ_SECURITY) // SKYRAT EDIT CHANGE
|
||||
GLOB.narcd_underages += usr
|
||||
flick(icon_deny,src)
|
||||
vend_ready = TRUE
|
||||
|
||||
Reference in New Issue
Block a user