* ItemToggle + slots stuff - Add component for itemslot locks to match LockComponent (surprised this didn't exist). - Add thing for pointlight to match itemtoggle. In future should be used for PDAs and stuff but need to fix some other stuff first. * Also this * grill
37 lines
1008 B
C#
37 lines
1008 B
C#
using Content.Shared.Lock;
|
|
|
|
namespace Content.Shared.Containers.ItemSlots;
|
|
|
|
public sealed partial class ItemSlotsSystem
|
|
{
|
|
private void InitializeLock()
|
|
{
|
|
SubscribeLocalEvent<ItemSlotsLockComponent, MapInitEvent>(OnLockMapInit);
|
|
SubscribeLocalEvent<ItemSlotsLockComponent, LockToggledEvent>(OnLockToggled);
|
|
}
|
|
|
|
private void OnLockMapInit(Entity<ItemSlotsLockComponent> ent, ref MapInitEvent args)
|
|
{
|
|
if (!TryComp(ent.Owner, out LockComponent? lockComp))
|
|
return;
|
|
|
|
UpdateLocks(ent, lockComp.Locked);
|
|
}
|
|
|
|
private void OnLockToggled(Entity<ItemSlotsLockComponent> ent, ref LockToggledEvent args)
|
|
{
|
|
UpdateLocks(ent, args.Locked);
|
|
}
|
|
|
|
private void UpdateLocks(Entity<ItemSlotsLockComponent> ent, bool value)
|
|
{
|
|
foreach (var slot in ent.Comp.Slots)
|
|
{
|
|
if (!TryGetSlot(ent.Owner, slot, out var itemSlot))
|
|
continue;
|
|
|
|
SetLock(ent.Owner, itemSlot, value);
|
|
}
|
|
}
|
|
}
|