[MIRROR] Refactors weird funky signal usage in style meter (#26845)

* Refactors weird funky signal usage in style meter

* Update style.dm

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>
This commit is contained in:
SkyratBot
2024-03-13 19:31:22 -04:00
committed by GitHub
co-authored by MrMelbert jjpark-kb
parent 54c740d150
commit 54a9df5729
2 changed files with 27 additions and 32 deletions
-8
View File
@@ -96,8 +96,6 @@
if(multitooled)
src.multitooled = multitooled
RegisterSignal(src, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(on_parent_multitool))
ADD_TRAIT(mob_parent, TRAIT_STYLISH, REF(src)) // SKYRAT EDIT ADD - allows style meter chads to do flips
/datum/component/style/RegisterWithParent()
@@ -345,12 +343,6 @@
INVOKE_ASYNC(source, TYPE_PROC_REF(/mob/living, put_in_hands), target)
source.visible_message(span_notice("[source] quickly swaps [weapon] out with [target]!"), span_notice("You quickly swap [weapon] with [target]."))
/datum/component/style/proc/on_parent_multitool(datum/source, mob/living/user, obj/item/tool, list/recipes)
multitooled = !multitooled
user.balloon_alert(user, "meter [multitooled ? "" : "un"]hacked")
// Point givers
/datum/component/style/proc/on_punch(mob/living/carbon/human/punching_person, atom/attacked_atom, proximity)
SIGNAL_HANDLER
+27 -24
View File
@@ -17,7 +17,6 @@
/obj/item/style_meter/Initialize(mapload)
. = ..()
meter_appearance = mutable_appearance(icon, icon_state)
RegisterSignal(src, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(on_multitool))
/obj/item/style_meter/Destroy(force)
if(istype(loc, /obj/item/clothing/glasses))
@@ -28,28 +27,30 @@
. = ..()
. += span_notice("You feel like a <b>multitool</b> could be used on this.")
/obj/item/style_meter/afterattack(atom/movable/attacked_atom, mob/user, proximity_flag, click_parameters)
. = ..()
if(!istype(attacked_atom, /obj/item/clothing/glasses))
return
/obj/item/style_meter/interact_with_atom(atom/interacting_with, mob/living/user)
if(!istype(interacting_with, /obj/item/clothing/glasses))
return NONE
forceMove(attacked_atom)
attacked_atom.add_overlay(meter_appearance)
RegisterSignal(attacked_atom, COMSIG_ITEM_EQUIPPED, PROC_REF(check_wearing))
RegisterSignal(attacked_atom, COMSIG_ITEM_DROPPED, PROC_REF(on_drop))
RegisterSignal(attacked_atom, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
RegisterSignal(attacked_atom, COMSIG_CLICK_ALT, PROC_REF(on_altclick))
RegisterSignal(attacked_atom, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(on_multitool))
. = ITEM_INTERACT_SUCCESS
forceMove(interacting_with)
interacting_with.add_overlay(meter_appearance)
RegisterSignal(interacting_with, COMSIG_ITEM_EQUIPPED, PROC_REF(check_wearing))
RegisterSignal(interacting_with, COMSIG_ITEM_DROPPED, PROC_REF(on_drop))
RegisterSignal(interacting_with, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
RegisterSignal(interacting_with, COMSIG_CLICK_ALT, PROC_REF(on_altclick))
RegisterSignal(interacting_with, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(redirect_multitool))
balloon_alert(user, "style meter attached")
playsound(src, 'sound/machines/click.ogg', 30, TRUE)
if(!iscarbon(attacked_atom.loc))
return
if(!iscarbon(interacting_with.loc))
return .
var/mob/living/carbon/carbon_wearer = attacked_atom.loc
if(carbon_wearer.glasses != attacked_atom)
return
var/mob/living/carbon/carbon_wearer = interacting_with.loc
if(carbon_wearer.glasses != interacting_with)
return .
style_meter = carbon_wearer.AddComponent(/datum/component/style, multitooled)
return .
/obj/item/style_meter/Moved(atom/old_loc, Dir, momentum_change)
. = ..()
@@ -98,15 +99,17 @@
return COMPONENT_CANCEL_CLICK_ALT
/// Signal proc for when the glasses or the meter is multitooled
/obj/item/style_meter/proc/on_multitool(datum/source, mob/living/user, obj/item/tool, list/recipes)
/obj/item/style_meter/multitool_act(mob/living/user, obj/item/tool)
multitooled = !multitooled
if(style_meter)
SEND_SIGNAL(style_meter, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), user, tool, recipes)
else
balloon_alert(user, "meter [multitooled ? "" : "un"]hacked")
balloon_alert(user, "meter [multitooled ? "" : "un"]hacked")
style_meter?.multitooled = multitooled
return ITEM_INTERACT_SUCCESS
/// Redirect multitooling on our glasses to our style meter
/obj/item/style_meter/proc/redirect_multitool(datum/source, mob/living/user, obj/item/tool, ...)
SIGNAL_HANDLER
return multitool_act(user, tool)
/// Unregister signals and just generally clean up ourselves after being removed from glasses
/obj/item/style_meter/proc/clean_up(atom/movable/old_location)