Exemplo n.º 1
0
 public bool IsBetterThan(CanEquipResult other)
 {
     if (status != other.status)
     {
         return(status < other.status);
     }
     else
     {
         return(conflictingItems.Count < other.ConflictingItems.Count);
     }
 }
Exemplo n.º 2
0
    public CanEquipResult CanEquip(ItemData item)
    {
        CanEquipResult bestResult = new CanEquipResult();

        foreach (var slotCombination in item.SlotCombinations)
        {
            CanEquipResult currentResult = CanEquip(slotCombination);
            if (currentResult.IsBetterThan(bestResult))
            {
                bestResult = currentResult;
            }
        }
        return(bestResult);
    }
Exemplo n.º 3
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);
    }