mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 14:31:28 +00:00
114 lines
1.9 KiB
Go
114 lines
1.9 KiB
Go
package main
|
|
|
|
type Item struct {
|
|
name string
|
|
sellIn, quality int
|
|
}
|
|
|
|
func min(x int, y int) int {
|
|
if x == y {
|
|
return x
|
|
}
|
|
if x < y {
|
|
return x
|
|
}
|
|
return y
|
|
}
|
|
|
|
func UpdateQualityBrie(item *Item) {
|
|
defer func() {
|
|
item.sellIn--
|
|
}()
|
|
|
|
if item.quality == 50 {
|
|
return
|
|
}
|
|
|
|
if item.sellIn > 0 {
|
|
item.quality++
|
|
}
|
|
if item.sellIn <= 0 {
|
|
item.quality = min(item.quality+2, 50)
|
|
}
|
|
|
|
}
|
|
|
|
func UpdateQualityBackstagePasses(item *Item) {
|
|
defer func() {
|
|
item.sellIn--
|
|
}()
|
|
|
|
if item.sellIn <= 0 {
|
|
item.quality = 0
|
|
}
|
|
|
|
if item.quality == 50 {
|
|
return
|
|
}
|
|
if item.quality == 49 && item.sellIn <= 0 {
|
|
item.quality = 50
|
|
}
|
|
if item.sellIn > 0 {
|
|
item.quality++
|
|
}
|
|
if item.sellIn <= 0 {
|
|
item.quality += 2
|
|
}
|
|
|
|
}
|
|
|
|
func UpdateQuality(items []*Item) {
|
|
for i := 0; i < len(items); i++ {
|
|
|
|
if items[i].name == "Sulfuras, Hand of Ragnaros" {
|
|
continue
|
|
}
|
|
|
|
if items[i].name == "Aged Brie" {
|
|
UpdateQualityBrie(items[i])
|
|
continue
|
|
}
|
|
|
|
if items[i].name != "Backstage passes to a TAFKAL80ETC concert" {
|
|
if items[i].quality > 0 {
|
|
items[i].quality = items[i].quality - 1
|
|
}
|
|
} else {
|
|
if items[i].quality < 50 {
|
|
items[i].quality = items[i].quality + 1
|
|
if items[i].name == "Backstage passes to a TAFKAL80ETC concert" {
|
|
if items[i].sellIn < 11 {
|
|
if items[i].quality < 50 {
|
|
items[i].quality = items[i].quality + 1
|
|
}
|
|
}
|
|
if items[i].sellIn < 6 {
|
|
if items[i].quality < 50 {
|
|
items[i].quality = items[i].quality + 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
items[i].sellIn = items[i].sellIn - 1
|
|
|
|
if items[i].sellIn < 0 {
|
|
if items[i].name != "Aged Brie" {
|
|
if items[i].name != "Backstage passes to a TAFKAL80ETC concert" {
|
|
if items[i].quality > 0 {
|
|
items[i].quality = items[i].quality - 1
|
|
}
|
|
} else {
|
|
items[i].quality = items[i].quality - items[i].quality
|
|
}
|
|
} else {
|
|
if items[i].quality < 50 {
|
|
items[i].quality = items[i].quality + 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|