diff --git a/TypeScript/app/gilded-rose.ts b/TypeScript/app/gilded-rose.ts index db58d678..7e6120c0 100644 --- a/TypeScript/app/gilded-rose.ts +++ b/TypeScript/app/gilded-rose.ts @@ -1,5 +1,13 @@ +enum ItemNames { + AgedBrie = 'Aged Brie', + BackstagePasses = 'Backstage passes to a TAFKAL80ETC concert', + Sulfuras = 'Sulfuras, Hand of Ragnaros' +} + +const itemNames = [ItemNames.AgedBrie, ItemNames.BackstagePasses, ItemNames.Sulfuras]; + export class Item { - name: string; + name: string | ItemNames; sellIn: number; quality: number; @@ -19,46 +27,25 @@ export class GildedRose { updateQuality() { for (let i = 0; i < this.items.length; i++) { - if (this.items[i].name != 'Aged Brie' && this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].quality > 0) { - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].quality = this.items[i].quality - 1 - } - } - } else { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - if (this.items[i].name == 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].sellIn < 11) { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - } - } - if (this.items[i].sellIn < 6) { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - } - } - } + const item = this.items[i]; + if (!itemNames.includes(item.name as ItemNames) && item.quality > 0) { + item.quality = item.quality - 1 + } else if (item.quality < 50) { + item.quality = item.quality + 1 + if (item.name == ItemNames.BackstagePasses && item.sellIn < 11) { + item.quality = item.quality + 1 } } - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].sellIn = this.items[i].sellIn - 1; + if (item.name != ItemNames.Sulfuras) { + item.sellIn = item.sellIn - 1; } - if (this.items[i].sellIn < 0) { - if (this.items[i].name != 'Aged Brie') { - if (this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].quality > 0) { - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].quality = this.items[i].quality - 1 - } - } - } else { - this.items[i].quality = this.items[i].quality - this.items[i].quality - } + if (item.sellIn < 0) { + if (item.name != ItemNames.AgedBrie) { + const shouldDecreaseQuality = ![ItemNames.BackstagePasses, ItemNames.Sulfuras].includes(item.name as ItemNames) && item.quality > 0; + item.quality = shouldDecreaseQuality ? item.quality - 1 : 0; } else { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 + if (item.quality < 50) { + item.quality = item.quality + 1 } } }