mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 00:29:02 +01:00
[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:
co-authored by
MrMelbert
jjpark-kb
parent
54c740d150
commit
54a9df5729
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user