This commit is contained in:
tbuckinx 2023-11-23 22:42:46 +01:00
parent d4ccdfe0e9
commit afc32f86f7
7 changed files with 16 additions and 31 deletions

View File

@ -3,7 +3,6 @@ package com.gildedrose;
import com.gildedrose.domain.*; import com.gildedrose.domain.*;
import com.gildedrose.domain.InventoryItem; import com.gildedrose.domain.InventoryItem;
import static java.util.stream.IntStream.range;
import static java.util.stream.Stream.of; import static java.util.stream.Stream.of;
class GildedRose { class GildedRose {
@ -26,17 +25,11 @@ class GildedRose {
// reduce sellIn // reduce sellIn
item.sellIn = inventoryItem.reduceSellIn(); item.sellIn = inventoryItem.reduceSellIn();
// increase quality when quality decrease is inverted // increase or decrease quality based on the items
if (inventoryItem.qualityDecreaseInverted()) { item.quality = inventoryItem.handleQuality();
item.quality = inventoryItem.increaseQualityBelowMaximum();
}
// decrease quality based on their decrease amount
else {
range(0, inventoryItem.qualityDecreaseAmount()).forEach(i -> item.quality = inventoryItem.decreaseQualityAboveZero());
}
if (item.sellIn < 0) { if (item.sellIn < 0) {
// increase or decrease quality more after sell in
item.quality = inventoryItem.handleQualityAfterSellIn(); item.quality = inventoryItem.handleQualityAfterSellIn();
} }
}); });

View File

@ -11,8 +11,9 @@ public class AgedBrie extends InventoryItem {
} }
@Override @Override
public boolean qualityDecreaseInverted() { public int handleQuality() {
return true; quality = increaseQualityBelowMaximum();
return quality;
} }
@Override @Override

View File

@ -11,8 +11,9 @@ public class BackstagePass extends InventoryItem {
} }
@Override @Override
public boolean qualityDecreaseInverted() { public int handleQuality() {
return true; quality = increaseQualityBelowMaximum();
return quality;
} }
@Override @Override

View File

@ -10,11 +10,6 @@ public class ConjuredItem extends InventoryItem {
setQuality(item.quality); setQuality(item.quality);
} }
@Override
public boolean qualityDecreaseInverted() {
return false;
}
@Override @Override
public int qualityDecreaseAmount() { public int qualityDecreaseAmount() {
return 2; return 2;

View File

@ -10,11 +10,6 @@ public class DefaultItem extends InventoryItem {
setQuality(item.quality); setQuality(item.quality);
} }
@Override
public boolean qualityDecreaseInverted() {
return false;
}
@Override @Override
public int qualityDecreaseAmount() { public int qualityDecreaseAmount() {
return 1; return 1;

View File

@ -3,6 +3,8 @@ package com.gildedrose.domain;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import static java.util.stream.IntStream.range;
@NoArgsConstructor @NoArgsConstructor
@Setter @Setter
public abstract class InventoryItem { public abstract class InventoryItem {
@ -12,8 +14,6 @@ public abstract class InventoryItem {
public int quality; public int quality;
public int sellIn; public int sellIn;
public abstract boolean qualityDecreaseInverted();
public abstract int qualityDecreaseAmount(); public abstract int qualityDecreaseAmount();
public abstract int handleQualityAfterSellIn(); public abstract int handleQualityAfterSellIn();
@ -34,4 +34,9 @@ public abstract class InventoryItem {
sellIn--; sellIn--;
return sellIn; return sellIn;
} }
public int handleQuality() {
range(0, qualityDecreaseAmount()).forEach(i -> quality = decreaseQualityAboveZero());
return quality;
}
} }

View File

@ -11,11 +11,6 @@ public class Legendary extends InventoryItem {
setQuality(item.quality); setQuality(item.quality);
} }
@Override
public boolean qualityDecreaseInverted() {
return false;
}
@Override @Override
public int qualityDecreaseAmount() { public int qualityDecreaseAmount() {
return 0; return 0;