return;
mask.IsToggled ^= true;
- _actionSystem.SetToggled(mask.ToggleActionEntity, mask.IsToggled);
- if (mask.IsToggled)
- _popupSystem.PopupEntity(Loc.GetString("action-mask-pull-down-popup-message", ("mask", uid)), args.Performer, args.Performer);
- else
- _popupSystem.PopupEntity(Loc.GetString("action-mask-pull-up-popup-message", ("mask", uid)), args.Performer, args.Performer);
+ var msg = $"action-mask-pull-{mask.IsToggled ? "down" : "up"}-popup-message";
+ _popupSystem.PopupEntity(Loc.GetString(msg, ("mask", uid)), args.Performer, args.Performer);
ToggleMaskComponents(uid, mask, args.Performer, mask.EquippedPrefix);
}
// set to untoggled when unequipped, so it isn't left in a 'pulled down' state
private void OnGotUnequipped(EntityUid uid, MaskComponent mask, GotUnequippedEvent args)
{
- if (mask.ToggleActionEntity == null)
+ if (!mask.IsToggled)
return;
mask.IsToggled = false;
- Dirty(uid, mask);
- _actionSystem.SetToggled(mask.ToggleActionEntity, mask.IsToggled);
-
ToggleMaskComponents(uid, mask, args.Equipee, mask.EquippedPrefix, true);
}
+ /// <summary>
+ /// Called after setting IsToggled, raises events and dirties.
+ /// <summary>
private void ToggleMaskComponents(EntityUid uid, MaskComponent mask, EntityUid wearer, string? equippedPrefix = null, bool isEquip = false)
{
+ Dirty(uid, mask);
+ if (mask.ToggleActionEntity is {} action)
+ _actionSystem.SetToggled(action, mask.IsToggled);
+
var maskEv = new ItemMaskToggledEvent(wearer, equippedPrefix, mask.IsToggled, isEquip);
RaiseLocalEvent(uid, ref maskEv);