public void RemoveTablet(TabletColors color, int count = 1) { if ((Tablets[color] - count) > -1) { Tablets[color] -= count; } else { throw new InvalidOperationException("Tablet count cannot be less than zero"); } }
public Slot(TabletColors color = TabletColors.Unknown, int count = 0) { this.Color = color; this.TabletCount = count; }
public void AddTablet(TabletColors color, int count = 1) { Tablets[color] += count; }
public void RemoveTablet(TabletColors slotColor, int count = 1) { if ((GetSlotByColor(slotColor).TabletCount - count) > -1) { GetSlotByColor(slotColor).TabletCount -= count; } else { throw new InvalidOperationException("Tablet count cannot be less than zero"); } }
private Slot GetSlotByColor(TabletColors slotColor) { return Slots[_slotIndexMap[slotColor]]; }
//TODO Check whether this method is required anywhere public bool IsSlotEmpty(TabletColors slotColor) { return (GetSlotByColor(slotColor).TabletCount == 0); }
public bool IsSlotFull(TabletColors slotColor) { return (GetSlotByColor(slotColor).TabletCount == SlotCapacity); }
public int GetSlotIndexReversed(TabletColors slotColor) { return _slotReverseIndexMap[slotColor]; }
public int GetSlotIndex(TabletColors slotColor) { return _slotIndexMap[slotColor]; }
public int GetSlotDepth(TabletColors slotColor) { return GetSlotByColor(slotColor).TabletCount; }
public void AddTablet(TabletColors slotColor, int count = 1) { GetSlotByColor(slotColor).TabletCount += count; }
/// <summary> /// Tells us if the the HSV color is in range /// </summary> /// <param name="srcHsv"> /// The HSV values we want to check are in range /// </param> /// <param name="targetHsv"> /// The range that we want the color to be in /// </param> /// <param name="color"> /// THe color that we want it to be in range of since the 'targetHsv' can be indexed for colors /// </param> /// <param name="lowerLimitExtra"> /// how much extra lower we want se the lower side of the range /// </param> /// <param name="higherLimitExtra"> /// How much higher we want o set higer side of the range /// </param> /// <returns> /// returns true if it is in range, false if it is not /// </returns> /// <todo> /// make lowerLimitsExtra in to HSV or make overload for it /// </todo> protected bool InHSVRange(Hsv srcHsv, Hsv[,] targetHsv, TabletColors color, int lowerLimitExtra, int higherLimitExtra) { if (targetHsv[(int)color, (int)HSVRange.Low].Hue < targetHsv[(int)color, (int)HSVRange.High].Hue) { return ((srcHsv.Hue >= (targetHsv[(int)color, (int)HSVRange.Low].Hue - lowerLimitExtra)) && //lower values (srcHsv.Satuation >= (targetHsv[(int)color, (int)HSVRange.Low].Satuation - lowerLimitExtra)) && (srcHsv.Value >= (targetHsv[(int)color, (int)HSVRange.Low].Value - lowerLimitExtra)) && (srcHsv.Hue <= (targetHsv[(int)color, (int)HSVRange.High].Hue + higherLimitExtra)) && //higher values (srcHsv.Satuation <= (targetHsv[(int)color, (int)HSVRange.High].Satuation + higherLimitExtra)) && (srcHsv.Value <= (targetHsv[(int)color, (int)HSVRange.High].Value + higherLimitExtra))); } else { if (srcHsv.Hue >= (targetHsv[(int)color, (int)HSVRange.Low].Hue - lowerLimitExtra)) { return ((srcHsv.Hue >= (targetHsv[(int)color, (int)HSVRange.Low].Hue - lowerLimitExtra)) && //lower values (srcHsv.Satuation >= (targetHsv[(int)color, (int)HSVRange.Low].Satuation - lowerLimitExtra)) && (srcHsv.Value >= (targetHsv[(int)color, (int)HSVRange.Low].Value - lowerLimitExtra)) && (srcHsv.Hue <= (179)) && //higher values (srcHsv.Satuation <= (targetHsv[(int)color, (int)HSVRange.High].Satuation + higherLimitExtra)) && (srcHsv.Value <= (targetHsv[(int)color, (int)HSVRange.High].Value + higherLimitExtra))); } else if (srcHsv.Hue <= (targetHsv[(int)color, (int)HSVRange.High].Hue + higherLimitExtra)) { return ((srcHsv.Hue >= (0)) && //lower values (srcHsv.Satuation >= (targetHsv[(int)color, (int)HSVRange.Low].Satuation - lowerLimitExtra)) && (srcHsv.Value >= (targetHsv[(int)color, (int)HSVRange.Low].Value - lowerLimitExtra)) && (srcHsv.Hue <= (targetHsv[(int)color, (int)HSVRange.High].Hue + higherLimitExtra)) && //higher values (srcHsv.Satuation <= (targetHsv[(int)color, (int)HSVRange.High].Satuation + higherLimitExtra)) && (srcHsv.Value <= (targetHsv[(int)color, (int)HSVRange.High].Value + higherLimitExtra))); } else return false; } }