1
1
export class Item {
2
- name : string ;
3
- sellIn : number ;
4
- quality : number ;
2
+ name : string ;
3
+ sellIn : number ;
4
+ quality : number ;
5
5
6
- constructor ( name , sellIn , quality ) {
7
- this . name = name ;
8
- this . sellIn = sellIn ;
9
- this . quality = quality ;
10
- }
6
+ constructor ( name , sellIn , quality ) {
7
+ this . name = name ;
8
+ this . sellIn = sellIn ;
9
+ this . quality = quality ;
10
+ }
11
11
}
12
12
13
13
export class GildedRose {
14
- items : Array < Item > ;
14
+ items : Array < Item > ;
15
15
16
- constructor ( items = [ ] as Array < Item > ) {
17
- this . items = items ;
18
- }
16
+ constructor ( items = [ ] as Array < Item > ) {
17
+ this . items = items ;
18
+ }
19
+
20
+ updateQuality ( ) {
21
+ for ( let i = 0 ; i < this . items . length ; i ++ ) {
22
+ if ( this . items [ i ] . name != "Sulfuras, Hand of Ragnaros" ) {
23
+ let qualityDifference = 1 ;
24
+ if ( this . items [ i ] . name . includes ( "Conjured" ) ) {
25
+ qualityDifference = 2 ;
26
+ }
27
+ if ( this . items [ i ] . sellIn <= 0 ) {
28
+ qualityDifference *= 2 ;
29
+ }
19
30
20
- updateQuality ( ) {
21
- for ( let i = 0 ; i < this . items . length ; i ++ ) {
22
- if ( this . items [ i ] . name != 'Aged Brie' && this . items [ i ] . name != 'Backstage passes to a TAFKAL80ETC concert' ) {
23
- if ( this . items [ i ] . quality > 0 ) {
24
- if ( this . items [ i ] . name != 'Sulfuras, Hand of Ragnaros' ) {
25
- this . items [ i ] . quality = this . items [ i ] . quality - 1
26
- }
27
- }
28
- } else {
29
- if ( this . items [ i ] . quality < 50 ) {
30
- this . items [ i ] . quality = this . items [ i ] . quality + 1
31
- if ( this . items [ i ] . name == 'Backstage passes to a TAFKAL80ETC concert' ) {
32
- if ( this . items [ i ] . sellIn < 11 ) {
33
- if ( this . items [ i ] . quality < 50 ) {
34
- this . items [ i ] . quality = this . items [ i ] . quality + 1
35
- }
36
- }
37
- if ( this . items [ i ] . sellIn < 6 ) {
38
- if ( this . items [ i ] . quality < 50 ) {
39
- this . items [ i ] . quality = this . items [ i ] . quality + 1
40
- }
41
- }
42
- }
43
- }
44
- }
45
- if ( this . items [ i ] . name != 'Sulfuras, Hand of Ragnaros' ) {
46
- this . items [ i ] . sellIn = this . items [ i ] . sellIn - 1 ;
47
- }
48
- if ( this . items [ i ] . sellIn < 0 ) {
49
- if ( this . items [ i ] . name != 'Aged Brie' ) {
50
- if ( this . items [ i ] . name != 'Backstage passes to a TAFKAL80ETC concert' ) {
51
- if ( this . items [ i ] . quality > 0 ) {
52
- if ( this . items [ i ] . name != 'Sulfuras, Hand of Ragnaros' ) {
53
- this . items [ i ] . quality = this . items [ i ] . quality - 1
54
- }
55
- }
56
- } else {
57
- this . items [ i ] . quality = this . items [ i ] . quality - this . items [ i ] . quality
58
- }
59
- } else {
60
- if ( this . items [ i ] . quality < 50 ) {
61
- this . items [ i ] . quality = this . items [ i ] . quality + 1
62
- }
63
- }
64
- }
31
+ if ( this . items [ i ] . name != "Aged Brie" && this . items [ i ] . name != "Backstage passes to a TAFKAL80ETC concert" && this . items [ i ] . quality > 0 ) {
32
+ this . items [ i ] . quality = this . items [ i ] . quality >= qualityDifference ? ( this . items [ i ] . quality - qualityDifference ) : 0 ;
65
33
}
66
34
67
- return this . items ;
35
+ if ( this . items [ i ] . name == "Aged Brie" && this . items [ i ] . quality < 50 ) {
36
+ this . items [ i ] . quality = ( this . items [ i ] . quality + qualityDifference ) <= 50 ? ( this . items [ i ] . quality + qualityDifference ) : 50 ;
37
+ }
38
+
39
+ if ( this . items [ i ] . name == "Backstage passes to a TAFKAL80ETC concert" && this . items [ i ] . quality < 50 ) {
40
+ if ( this . items [ i ] . sellIn > 10 ) {
41
+ this . items [ i ] . quality += qualityDifference ;
42
+ } else if ( 5 < this . items [ i ] . sellIn && this . items [ i ] . sellIn <= 10 ) {
43
+ this . items [ i ] . quality = ( this . items [ i ] . quality + 2 * qualityDifference ) <= 50 ? ( this . items [ i ] . quality + 2 * qualityDifference ) : 50 ;
44
+ } else if ( 0 < this . items [ i ] . sellIn && this . items [ i ] . sellIn <= 5 ) {
45
+ this . items [ i ] . quality = ( this . items [ i ] . quality + 3 * qualityDifference ) <= 50 ? ( this . items [ i ] . quality + 3 * qualityDifference ) : 50 ;
46
+ } else {
47
+ this . items [ i ] . quality = 0 ;
48
+ }
49
+ }
50
+ this . items [ i ] . sellIn -= 1 ;
51
+ }
68
52
}
69
- }
53
+ return this . items ;
54
+ }
55
+ }
0 commit comments