public void RemoveSlot(IWeaponSlot slot) { if (slots.Remove(slot)) { UnsubscribeFromSlotEvents(slot); } }
public bool EmptySlot(IWeaponSlot slot) { if (!OwnsSlot(slot)) { return(false); } return(slot.Unequip()); }
public void AddSlot(IWeaponSlot slot) { if (slots.Contains(slot)) { return; } slots.Add(slot); SubscribeToSlotEvents(slot); }
public bool UnequipWeapon(IWeapon weapon) { IWeaponSlot matchingSlot = GetMatchingSlot(weapon); if (matchingSlot == null) { return(false); } return(matchingSlot.Unequip()); }
public bool EquipWeapon(IWeapon weapon) { if (IsEquipped(weapon)) { return(false); } IWeaponSlot emptySlot = FindEmptySlot; return(EquipWeapon(emptySlot, weapon)); }
public bool EmptySlotAtIndex(int index) { IWeaponSlot slot = GetSlotAtIndex(index); if (slot == null) { return(false); } return(slot.Unequip()); }
public int GetSlotIndex(IWeaponSlot slot) => slot != null?slots.IndexOf(slot) : -1;
public bool EquipWeapon(IWeaponSlot slot, IWeapon weapon) => OwnsSlot(slot) ? slot.Equip(weapon) : false;
public bool OwnsSlot(IWeaponSlot slot) { int index = GetSlotIndex(slot); return(index >= 0 && index < SlotCount); }
public void UnsubscribeFromSlotEvents(IWeaponSlot slot) { slot.OnEquipped -= WeaponEquipped; slot.OnUnequipped -= WeaponUnequipped; }
private void SubscribeToSlotEvents(IWeaponSlot slot) { slot.OnEquipped += WeaponEquipped; slot.OnUnequipped += WeaponUnequipped; }