1
0

ItemSlotsSystem.Lock.cs 1008 B

123456789101112131415161718192021222324252627282930313233343536
  1. using Content.Shared.Lock;
  2. namespace Content.Shared.Containers.ItemSlots;
  3. public sealed partial class ItemSlotsSystem
  4. {
  5. private void InitializeLock()
  6. {
  7. SubscribeLocalEvent<ItemSlotsLockComponent, MapInitEvent>(OnLockMapInit);
  8. SubscribeLocalEvent<ItemSlotsLockComponent, LockToggledEvent>(OnLockToggled);
  9. }
  10. private void OnLockMapInit(Entity<ItemSlotsLockComponent> ent, ref MapInitEvent args)
  11. {
  12. if (!TryComp(ent.Owner, out LockComponent? lockComp))
  13. return;
  14. UpdateLocks(ent, lockComp.Locked);
  15. }
  16. private void OnLockToggled(Entity<ItemSlotsLockComponent> ent, ref LockToggledEvent args)
  17. {
  18. UpdateLocks(ent, args.Locked);
  19. }
  20. private void UpdateLocks(Entity<ItemSlotsLockComponent> ent, bool value)
  21. {
  22. foreach (var slot in ent.Comp.Slots)
  23. {
  24. if (!TryGetSlot(ent.Owner, slot, out var itemSlot))
  25. continue;
  26. SetLock(ent.Owner, itemSlot, value);
  27. }
  28. }
  29. }