public bool IsBetterThan(CanEquipResult other) { if (status != other.status) { return(status < other.status); } else { return(conflictingItems.Count < other.ConflictingItems.Count); } }
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); }
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); }