예제 #1
0
 public EquipmentSlotData(EquipmentSlotData other)
 {
     item    = other.item;
     primary = other.primary;
     locked  = other.locked;
     empty   = other.empty;
 }
예제 #2
0
 public EquipmentData(EquipmentData other)
 {
     head     = new EquipmentSlotData(other.head);
     torso    = new EquipmentSlotData(other.torso);
     legs     = new EquipmentSlotData(other.legs);
     feet     = new EquipmentSlotData(other.feet);
     leftArm  = new EquipmentSlotData(other.leftArm);
     rightArm = new EquipmentSlotData(other.rightArm);
 }
예제 #3
0
 public EquipmentData()
 {
     head     = new EquipmentSlotData();
     torso    = new EquipmentSlotData();
     legs     = new EquipmentSlotData();
     feet     = new EquipmentSlotData();
     leftArm  = new EquipmentSlotData();
     rightArm = new EquipmentSlotData();
 }
예제 #4
0
 public void Unequip(ItemData item)
 {
     foreach (var slotType in GetValidSlotTypes())
     {
         EquipmentSlotData slot = GetEquipmentSlot(slotType);
         if (slot.Item == item && slot.Primary)
         {
             Unequip(item.GetSlotCombination(slotType));
             return;
         }
     }
 }
예제 #5
0
    public IList <EquippedItemInfo> GetEquippedItems()
    {
        var result = new List <EquippedItemInfo>();

        foreach (EquipmentSlotType slotType in System.Enum.GetValues(typeof(EquipmentSlotType)))
        {
            if (slotType == EquipmentSlotType.None)
            {
                continue;
            }
            EquipmentSlotData slotData = GetEquipmentSlot(slotType);
            ItemData          item     = slotData.Item;
            if (item != null && slotData.Primary)
            {
                result.Add(new EquippedItemInfo(item, slotType));
            }
        }
        return(result.AsReadOnly());
    }
예제 #6
0
    public CanEquipResult CanEquip(EquipmentSlotCombination slotCombination)
    {
        var  result = new CanEquipResult();
        bool primaryConflictDetected   = false;
        bool secondaryConflictDetected = false;

        foreach (var slotType in slotCombination.SlotsTaken)
        {
            EquipmentSlotData slotData = GetEquipmentSlot(slotType);
            if (slotData == null)
            {
                result.Status = CanEquipStatus.No_Impossible;
                return(result);
            }
            if (!slotData.Empty)
            {
                result.AddConflictingItem(slotData.Item);
                if (slotType == slotCombination.PrimarySlot)
                {
                    primaryConflictDetected = true;
                }
                else
                {
                    secondaryConflictDetected = true;
                }
            }
        }
        if (primaryConflictDetected && !secondaryConflictDetected)
        {
            result.Status = CanEquipStatus.No_PrimaryConflict;
        }
        else if (secondaryConflictDetected)
        {
            result.Status = CanEquipStatus.No_SecondaryConflict;
        }
        else
        {
            result.Status = CanEquipStatus.Yes;
        }

        return(result);
    }
예제 #7
0
    public ItemData Unequip(EquipmentSlotType slotType)
    {
        EquipmentSlotData slot = GetEquipmentSlot(slotType);

        if (slot.Empty)
        {
            Debug.LogWarning("Slot already empty");
            return(null);
        }
        else
        {
            EquipmentSlotCombination slotCombination;
            ItemData item = slot.Item;
            if (slot.Primary)
            {
                slotCombination = item.GetSlotCombination(slotType);
            }
            else
            {
                slotCombination = item.GetSlotCombinationWithSecondarySlot(slotType);
            }
            return(Unequip(slotCombination));
        }
    }
예제 #8
0
    protected override void LoadDataInternal()
    {
        if (!isInitialized)
        {
            return;
        }

        InventoryData inventoryData   = parentMenu.InventoryData;
        ItemData      itemData        = null;
        int           count           = 0;
        bool          itemIconEnabled = false;
        bool          locked          = false;

        if (!slotId.isEquipmentSlot)
        {
            InventorySlotData inventorySlotData = inventoryData.GetInventorySlotData(slotId.inventorySlotId);
            if (!inventorySlotData.Empty)
            {
                itemData        = inventorySlotData.Item;
                itemIconEnabled = true;
            }
            count = inventorySlotData.Count;
        }
        else if (slotId.isEquipmentSlot)
        {
            EquipmentSlotData eqSlotData = inventoryData.EquipmentData.GetEquipmentSlot(slotId.equipmentSlotType);
            if (!eqSlotData.Empty)
            {
                itemData = eqSlotData.Item;
                if (eqSlotData.Primary)
                {
                    itemIconEnabled = true;
                }
                else
                {
                    locked = true;
                }
            }
        }

        if (itemData != null)
        {
            if (itemData.IsType(ItemType.Weapon))
            {
                UnitWeaponCombiner combiner = new UnitWeaponCombiner(parentMenu.UnitData, itemData.WeaponData);
                if (!combiner.CanUse)
                {
                    locked = true;
                }
            }
        }

        if (itemIconEnabled)
        {
            itemIcon.enabled = true;
            itemIcon.texture = parentMenu.ItemIconAtlas;
            itemIcon.uvRect  = parentMenu.GetItemIconUvRect(itemData);
        }
        else
        {
            itemIcon.enabled = false;
        }

        lockIcon.enabled = locked;

        if (count > 1)
        {
            countText.text = count.ToString();
        }
        else
        {
            countText.text = "";
        }

        nameText.text = eqSlotName;

        if (parentMenu.IsSelected(slotId))
        {
            borderImage.color = selectedBorderColor;
        }
        else
        {
            borderImage.color = deselectedBorderColor;
        }
    }