Esempio n. 1
0
    private State GetCurrentState()
    {
        ItemData selectedItem = parentMenu.SelectedItem;

        if (selectedItem == null)
        {
            return(State.NoItem);
        }

        if (parentMenu.IsInventorySlotSelected)
        {
            if (EquipRequirementsMet())
            {
                canEquipResult = parentMenu.InventoryData.EquipmentData.CanEquip(parentMenu.SelectedItem);
                switch (canEquipResult.Status)
                {
                case EquipmentData.CanEquipStatus.No_Impossible:
                    return(State.Equip_Impossible);

                case EquipmentData.CanEquipStatus.No_PrimaryConflict:
                    return(State.Equip_PrimaryConflict);

                case EquipmentData.CanEquipStatus.No_SecondaryConflict:
                    if (parentMenu.InventoryData.CanAdd(canEquipResult.ConflictingItems))
                    {
                        return(State.Equip_SecondaryConflict);
                    }
                    else
                    {
                        return(State.Unequip_InventoryFull);
                    }

                case EquipmentData.CanEquipStatus.Yes:
                    return(State.Equip_Yes);

                default:
                    return(State.Equip_Impossible);
                }
            }
            else
            {
                return(State.Equip_RequirementsNotMet);
            }
        }
        else
        {
            InventoryData.CanUnequipStatus canUnequipStatus = parentMenu.InventoryData.CanUnequip(parentMenu.SelectedSlotId.equipmentSlotType);
            switch (canUnequipStatus)
            {
            case InventoryData.CanUnequipStatus.Yes:
                return(State.Unequip_Yes);

            case InventoryData.CanUnequipStatus.No_InventoryFull:
                return(State.Unequip_InventoryFull);

            default:
                return(State.NoItem);
            }
        }
    }
Esempio n. 2
0
    public void Equip(int inventorySlotId)
    {
        if (!IsValidSlotId(inventorySlotId))
        {
            return;
        }

        InventorySlotData inventorySlot = invSlots[inventorySlotId];

        if (inventorySlot.Empty)
        {
            return;
        }

        ItemData item = inventorySlot.Item;

        EquipmentData.CanEquipResult canEquipResult = equipmentData.CanEquip(item);
        switch (canEquipResult.Status)
        {
        case EquipmentData.CanEquipStatus.Yes:
            Remove(item);
            equipmentData.Equip(item);
            break;

        case EquipmentData.CanEquipStatus.No_PrimaryConflict:
        case EquipmentData.CanEquipStatus.No_SecondaryConflict:
            Remove(item);
            IList <ItemData> unequippedItems = canEquipResult.ConflictingItems;
            foreach (var unequippedItem in unequippedItems)
            {
                Add(unequippedItem);
                equipmentData.Unequip(unequippedItem);
            }
            equipmentData.Equip(item);
            break;
        }
    }