mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-12 23:54:24 +01:00
Merge pull request #14936 from ItsSelis/selis-weakrefs
Little Weakref Refactor
This commit is contained in:
@@ -56,7 +56,7 @@ var/global/list/default_medbay_channels = list(
|
||||
|
||||
// Bluespace radios talk directly to telecomms equipment
|
||||
var/bluespace_radio = FALSE
|
||||
var/weakref/bs_tx_weakref //Maybe misleading, this is the device to TRANSMIT TO
|
||||
var/datum/weakref/bs_tx_weakref //Maybe misleading, this is the device to TRANSMIT TO
|
||||
// For mappers or subtypes, to start them prelinked to these devices
|
||||
var/bs_tx_preload_id
|
||||
var/bs_rx_preload_id
|
||||
@@ -104,14 +104,14 @@ var/global/list/default_medbay_channels = list(
|
||||
//Try to find a receiver
|
||||
for(var/obj/machinery/telecomms/receiver/RX in telecomms_list)
|
||||
if(RX.id == bs_tx_preload_id) //Again, bs_tx is the thing to TRANSMIT TO, so a receiver.
|
||||
bs_tx_weakref = weakref(RX)
|
||||
bs_tx_weakref = WEAKREF(RX)
|
||||
RX.link_radio(src)
|
||||
break
|
||||
//Hmm, howabout an AIO machine
|
||||
if(!bs_tx_weakref)
|
||||
for(var/obj/machinery/telecomms/allinone/AIO in telecomms_list)
|
||||
if(AIO.id == bs_tx_preload_id)
|
||||
bs_tx_weakref = weakref(AIO)
|
||||
bs_tx_weakref = WEAKREF(AIO)
|
||||
AIO.link_radio(src)
|
||||
break
|
||||
if(!bs_tx_weakref)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
var/channel = "NCS Northern Star News Feed"
|
||||
var/obj/machinery/camera/network/thunder/camera
|
||||
var/obj/item/device/radio/radio
|
||||
var/weakref/showing
|
||||
var/datum/weakref/showing
|
||||
var/showing_name
|
||||
|
||||
/obj/item/device/tvcamera/New()
|
||||
@@ -95,7 +95,7 @@
|
||||
if(showing)
|
||||
hide_tvs(showing)
|
||||
|
||||
showing = weakref(thing)
|
||||
showing = WEAKREF(thing)
|
||||
showing_name = "[thing]"
|
||||
for(var/obj/machinery/computer/security/telescreen/entertainment/ES as anything in GLOB.entertainment_screens)
|
||||
ES.show_thing(thing)
|
||||
@@ -221,4 +221,3 @@
|
||||
return
|
||||
|
||||
..()
|
||||
|
||||
|
||||
@@ -48,10 +48,10 @@
|
||||
|
||||
/obj/item/device/uav/Initialize()
|
||||
. = ..()
|
||||
|
||||
|
||||
if(!cell && cell_type)
|
||||
cell = new cell_type
|
||||
|
||||
|
||||
ion_trail = new /datum/effect/effect/system/ion_trail_follow()
|
||||
ion_trail.set_up(src)
|
||||
ion_trail.stop()
|
||||
@@ -69,7 +69,7 @@
|
||||
. += "It has <i>'[nickname]'</i> scribbled on the side."
|
||||
if(!cell)
|
||||
. += "<span class='warning'>It appears to be missing a power cell.</span>"
|
||||
|
||||
|
||||
if(health <= (initial(health)/4))
|
||||
. += "<span class='warning'>It looks like it might break at any second!</span>"
|
||||
else if(health <= (initial(health)/2))
|
||||
@@ -86,7 +86,7 @@
|
||||
"Toggle Power" = radial_power,
|
||||
"Pairing Mode" = radial_pair)
|
||||
var/choice = show_radial_menu(user, src, options, require_near = !issilicon(user))
|
||||
|
||||
|
||||
switch(choice)
|
||||
// Can pick up when off or packed
|
||||
if("Pick Up")
|
||||
@@ -113,11 +113,11 @@
|
||||
/obj/item/device/uav/attackby(var/obj/item/I, var/mob/user)
|
||||
if(istype(I, /obj/item/modular_computer) && state == UAV_PAIRING)
|
||||
var/obj/item/modular_computer/MC = I
|
||||
LAZYDISTINCTADD(MC.paired_uavs, weakref(src))
|
||||
LAZYDISTINCTADD(MC.paired_uavs, WEAKREF(src))
|
||||
playsound(src, 'sound/machines/buttonbeep.ogg', 50, 1)
|
||||
visible_message("<span class='notice'>[user] pairs [I] to [nickname]</span>")
|
||||
toggle_pairing()
|
||||
|
||||
|
||||
else if(I.is_screwdriver() && cell)
|
||||
if(do_after(user, 3 SECONDS, src))
|
||||
to_chat(user, "<span class='notice'>You remove [cell] into [nickname].</span>")
|
||||
@@ -125,7 +125,7 @@
|
||||
power_down()
|
||||
cell.forceMove(get_turf(src))
|
||||
cell = null
|
||||
|
||||
|
||||
else if(istype(I, /obj/item/weapon/cell) && !cell)
|
||||
if(do_after(user, 3 SECONDS, src))
|
||||
to_chat(user, "<span class='notice'>You insert [I] into [nickname].</span>")
|
||||
@@ -185,7 +185,7 @@
|
||||
playsound(src, 'sound/items/drop/metalboots.ogg', 75, 1)
|
||||
power_down()
|
||||
health -= initial(health)*0.25 //Lose 25% of your original health
|
||||
|
||||
|
||||
if(LAZYLEN(masters))
|
||||
no_masters_time = 0
|
||||
else if(no_masters_time++ > 50)
|
||||
@@ -251,7 +251,7 @@
|
||||
/obj/item/device/uav/proc/power_down()
|
||||
if(state != UAV_ON)
|
||||
return
|
||||
|
||||
|
||||
state = UAV_OFF
|
||||
update_icon()
|
||||
stop_hover()
|
||||
@@ -265,7 +265,7 @@
|
||||
return cell
|
||||
|
||||
/obj/item/device/uav/relaymove(var/mob/user, direction, signal = 1)
|
||||
if(signal && state == UAV_ON && (weakref(user) in masters))
|
||||
if(signal && state == UAV_ON && (WEAKREF(user) in masters))
|
||||
if(next_move <= world.time)
|
||||
next_move = world.time + (1 SECOND/signal)
|
||||
step(src, direction)
|
||||
@@ -276,10 +276,10 @@
|
||||
return "[nickname] - [get_x(src)],[get_y(src)],[get_z(src)] - I:[health]/[initial(health)] - C:[cell ? "[cell.charge]/[cell.maxcharge]" : "Not Installed"]"
|
||||
|
||||
/obj/item/device/uav/proc/add_master(var/mob/living/M)
|
||||
LAZYDISTINCTADD(masters, weakref(M))
|
||||
LAZYDISTINCTADD(masters, WEAKREF(M))
|
||||
|
||||
/obj/item/device/uav/proc/remove_master(var/mob/living/M)
|
||||
LAZYREMOVE(masters, weakref(M))
|
||||
LAZYREMOVE(masters, WEAKREF(M))
|
||||
|
||||
/obj/item/device/uav/check_eye()
|
||||
if(state == UAV_ON)
|
||||
@@ -310,7 +310,7 @@
|
||||
/obj/item/device/uav/hear_talk(var/mob/M, list/message_pieces, verb)
|
||||
var/name_used = M.GetVoice()
|
||||
for(var/wr_master in masters)
|
||||
var/weakref/wr = wr_master
|
||||
var/datum/weakref/wr = wr_master
|
||||
var/mob/master = wr.resolve()
|
||||
var/list/combined = master.combine_message(message_pieces, verb, M)
|
||||
var/message = combined["formatted"]
|
||||
@@ -319,14 +319,14 @@
|
||||
|
||||
/obj/item/device/uav/see_emote(var/mob/living/M, text)
|
||||
for(var/wr_master in masters)
|
||||
var/weakref/wr = wr_master
|
||||
var/datum/weakref/wr = wr_master
|
||||
var/mob/master = wr.resolve()
|
||||
var/rendered = "<i><span class='game say'>UAV received, <span class='message'>[text]</span></span></i>"
|
||||
master.show_message(rendered, 2)
|
||||
|
||||
/obj/item/device/uav/show_message(msg, type, alt, alt_type)
|
||||
for(var/wr_master in masters)
|
||||
var/weakref/wr = wr_master
|
||||
var/datum/weakref/wr = wr_master
|
||||
var/mob/master = wr.resolve()
|
||||
var/rendered = "<i><span class='game say'>UAV received, <span class='message'>[msg]</span></span></i>"
|
||||
master.show_message(rendered, type)
|
||||
@@ -365,4 +365,4 @@
|
||||
|
||||
#undef UAV_OFF
|
||||
#undef UAV_ON
|
||||
#undef UAV_PACKED
|
||||
#undef UAV_PACKED
|
||||
|
||||
@@ -850,12 +850,12 @@
|
||||
plane = PLANE_PLAYER_HUD_ITEMS
|
||||
layer = 0.1
|
||||
alpha = 200
|
||||
var/weakref/held_item
|
||||
var/datum/weakref/held_item
|
||||
|
||||
/atom/movable/storage_slot/New(newloc, obj/item/held_item)
|
||||
ASSERT(held_item)
|
||||
name += held_item.name
|
||||
src.held_item = weakref(held_item)
|
||||
src.held_item = WEAKREF(held_item)
|
||||
|
||||
/atom/movable/storage_slot/Destroy()
|
||||
held_item = null
|
||||
@@ -898,4 +898,4 @@
|
||||
var/obj/item/weapon/holder/H = new user.holder_type(get_turf(user), user)
|
||||
src.handle_item_insertion(H, 1)
|
||||
to_chat(user, "<span class='notice'>You climb into \the [src].</span>")
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
Reference in New Issue
Block a user