Rest of the world

This commit is contained in:
Remus Decea 2023-11-10 17:36:30 +02:00
parent c2f64846b2
commit fd938e05ba

View File

@ -13,48 +13,51 @@ class GildedRose {
this.items = items;
}
private int getDecreasedQuality(int oldQuality, int factor){
return Math.max(oldQuality - factor, 0);
}
private int getIncreasedQuality(Item item, int factor) {
return Math.min(item.quality + factor, 50);
}
private void decreaseQualityOfNormalItems(Item item) {
int decreaseFactor = (item.sellIn > 0) ? 1 : 2;
item.quality = getDecreasedQuality(item.quality, decreaseFactor);
}
private void increaseQualityOfBries(Item item) {
int increaseFactor = (item.sellIn > 0) ? 1 : 2;
item.quality = getIncreasedQuality(item, increaseFactor);
}
private void changeQualityOfPasses(Item item) {
if (item.sellIn < 0) {
item.quality = 0;
} else if (item.sellIn < 5) {
item.quality = getIncreasedQuality(item, 3);
} else if (item.sellIn < 10) {
item.quality = getIncreasedQuality(item, 2);
} else
item.quality = getIncreasedQuality(item, 1);
}
public void updateQuality() {
Item[] agingItems = Arrays.stream(items).filter(i -> !i.name.equals(sulfuras)).toArray(Item[]::new);
for (Item item : agingItems) {
if (!item.name.equals(agedBrie) && !item.name.equals(backStagePasses)) {
if (item.quality > 0) {
item.quality = item.quality - 1;
}
} else {
if (item.quality < 50) {
item.quality = item.quality + 1;
if (item.name.equals(backStagePasses)) {
if (item.sellIn < 11) {
if (item.quality < 50) {
item.quality = item.quality + 1;
}
}
if (item.sellIn < 6) {
if (item.quality < 50) {
item.quality = item.quality + 1;
}
}
}
}
}
Item[] bries = Arrays.stream(agingItems).filter(i -> i.name.equals(agedBrie)).toArray(Item[]::new);
Item[] backstagePasses = Arrays.stream(agingItems).filter(i -> i.name.equals(backStagePasses)).toArray(Item[]::new);
Item[] otherItems = Arrays.stream(agingItems).filter(i -> !i.name.equals(backStagePasses) && !i.name.equals(agedBrie)).toArray(Item[]::new);
for (Item item : otherItems) {
item.sellIn = item.sellIn - 1;
if (item.sellIn < 0) {
if (!item.name.equals(agedBrie)) {
if (!item.name.equals(backStagePasses)) {
if (item.quality > 0) {
item.quality = item.quality - 1;
}
} else {
item.quality = 0;
}
} else {
if (item.quality < 50) {
item.quality = item.quality + 1;
}
}
}
decreaseQualityOfNormalItems(item);
}
for (Item brie : bries) {
brie.sellIn = brie.sellIn - 1;
increaseQualityOfBries(brie);
}
for (Item item : backstagePasses) {
item.sellIn = item.sellIn - 1;
changeQualityOfPasses(item);
}
}
}