Refactored item equipement observable away (#19241)

Refactored item equipement observable away, turned them into signals.
Partially ported on_equipped / equipped procs from TG, updated logic,
added signals for them.
This commit is contained in:
Fluffy
2024-05-31 21:25:02 +00:00
committed by GitHub
parent 7fdfb4ce02
commit 37814ef383
7 changed files with 134 additions and 75 deletions
+4 -3
View File
@@ -106,8 +106,8 @@
current_weight += I.w_class
add_vis_contents(I)
I.vis_flags |= VIS_INHERIT_LAYER | VIS_INHERIT_PLANE
item_equipped_event.register(I, src, PROC_REF(pick_up))
GLOB.destroyed_event.register(I, src, PROC_REF(unload_item))
RegisterSignal(I, COMSIG_ITEM_EQUIPPED, PROC_REF(pick_up))
RegisterSignal(I, COMSIG_QDELETING, PROC_REF(unload_item))
/obj/item/tray/verb/unload()
set name = "Unload Tray"
@@ -144,7 +144,8 @@
unload_item(contained, moved_to)
/obj/item/tray/proc/unload_item(var/obj/item/contained, var/atom/dropspot = null)
item_equipped_event.unregister(contained, src)
UnregisterSignal(contained, COMSIG_ITEM_EQUIPPED)
UnregisterSignal(contained, COMSIG_QDELETING)
if(dropspot)
contained.forceMove(dropspot)
vis_contents.Remove(contained)
@@ -243,7 +243,7 @@ This saves us from having to call add_fingerprint() any time something is put in
switch(slot)
if(slot_back)
src.back = W
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_back(redraw_mob)
if(slot_wear_mask)
src.wear_mask = W
@@ -251,32 +251,32 @@ This saves us from having to call add_fingerprint() any time something is put in
update_hair(redraw_mob) //rebuild hair
update_inv_l_ear(0)
update_inv_r_ear(0)
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_wear_mask(redraw_mob)
if(slot_handcuffed)
src.handcuffed = W
update_inv_handcuffed(redraw_mob)
if(slot_legcuffed)
src.legcuffed = W
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_legcuffed(redraw_mob)
if(slot_l_hand)
src.l_hand = W
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
W.screen_loc = ui_lhand
update_inv_l_hand(redraw_mob)
if(slot_r_hand)
src.r_hand = W
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
W.screen_loc = ui_rhand
update_inv_r_hand(redraw_mob)
if(slot_belt)
src.belt = W
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_belt(redraw_mob)
if(slot_wear_id)
src.wear_id = W
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_wear_id(redraw_mob)
if(slot_l_ear)
src.l_ear = W
@@ -288,7 +288,7 @@ This saves us from having to call add_fingerprint() any time something is put in
var/obj/item/clothing/ears/offear/O = new /obj/item/clothing/ears/offear(src)
O.copy_ear(W)
src.r_ear = O
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_l_ear(redraw_mob)
if(slot_r_ear)
src.r_ear = W
@@ -300,19 +300,19 @@ This saves us from having to call add_fingerprint() any time something is put in
var/obj/item/clothing/ears/offear/O = new /obj/item/clothing/ears/offear(src)
O.copy_ear(W)
src.l_ear = O
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_r_ear(redraw_mob)
if(slot_glasses)
src.glasses = W
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_glasses(redraw_mob)
if(slot_gloves)
src.gloves = W
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_gloves(redraw_mob)
if(slot_wrists)
src.wrists = W
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_wrists(redraw_mob)
if(slot_head)
src.head = W
@@ -321,34 +321,34 @@ This saves us from having to call add_fingerprint() any time something is put in
update_inv_l_ear(0)
update_inv_r_ear(0)
update_inv_wear_mask(0)
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_head(redraw_mob)
if(slot_shoes)
src.shoes = W
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_shoes(redraw_mob)
update_noise_level()
if(slot_wear_suit)
src.wear_suit = W
if(wear_suit.flags_inv & HIDESHOES)
update_inv_shoes(0)
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_wear_suit(redraw_mob)
if(slot_w_uniform)
src.w_uniform = W
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_w_uniform(redraw_mob)
if(slot_l_store)
src.l_store = W
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_pockets(redraw_mob)
if(slot_r_store)
src.r_store = W
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_pockets(redraw_mob)
if(slot_s_store)
src.s_store = W
W.equipped(src, slot, assisted_equip)
W.on_equipped(src, slot, assisted_equip)
update_inv_s_store(redraw_mob)
if(slot_in_backpack)
if(src.get_active_hand() == W)