public bool AddItem(InventoryItem inventoryItem) => _armsContainer.AddItem(inventoryItem);
Exemplo n.º 2
0
        public static bool PreAddOrSwap(ref bool __result, InventoryItem itemA, Equipment equipmentB, string slotB)
        {
            if (itemA == null || !itemA.CanDrag(true) || equipmentB == null)
            {
                return(true);
            }
            Pickupable item = itemA.item;

            if (item == null)
            {
                return(true);
            }
            TechType techType  = item.GetTechType();
            bool     isBattery = IsChip(techType);

            if (isBattery)
            {
                IItemsContainer container = itemA.container;
                if (container == null)
                {
                    return(true);
                }
                Equipment equipment = container as Equipment;
                bool      flag      = equipment != null;
                string    empty     = string.Empty;
                if (flag && !equipment.GetItemSlot(item, ref empty))
                {
                    return(true);
                }
                EquipmentType equipmentType = EquipmentType.BatteryCharger;
                if (string.IsNullOrEmpty(slotB))
                {
                    equipmentB.GetCompatibleSlot(equipmentType, out slotB);
                }
                if (string.IsNullOrEmpty(slotB))
                {
                    return(true);
                }
                if (container == equipmentB && empty == slotB)
                {
                    return(true);
                }
                EquipmentType slotBType = Equipment.GetSlotType(slotB);
                if (slotBType != EquipmentType.BatteryCharger)
                {
                    return(true);
                }
                else                 // Else, we're trying to plug a battery or powercell to its charger
                {
                    InventoryItem inventoryItem = equipmentB.RemoveItem(slotB, false, true);
                    if (inventoryItem == null)
                    {
                        if (equipmentB.AddItem(slotB, itemA, false))
                        {
                            __result = true;
                            return(false);
                        }
                    }
                    else if (equipmentB.AddItem(slotB, itemA, false))
                    {
                        if ((flag && equipment.AddItem(empty, inventoryItem, false)) || (!flag && container.AddItem(inventoryItem)))
                        {
                            __result = true;
                            return(false);
                        }
                        if (flag)
                        {
                            equipment.AddItem(empty, itemA, true);
                        }
                        else
                        {
                            container.AddItem(itemA);
                        }
                        equipmentB.AddItem(slotB, inventoryItem, true);
                    }
                    else
                    {
                        equipmentB.AddItem(slotB, inventoryItem, true);
                    }
                    __result = false;
                    return(false);
                }
            }
            return(true);
        }