@@ -9,7 +9,6 @@ export class returnChips extends Phaser.GameObjects.DOMElement {
99 * @param {integer } x
1010 * @param {integer } y
1111 * @param {string } cache
12- * @param {string } use
1312 */
1413
1514 constructor ( scene , x , y , cache ) {
@@ -19,7 +18,7 @@ export class returnChips extends Phaser.GameObjects.DOMElement {
1918 this . setDepth ( 2 ) ;
2019 }
2120
22- createReturnChips ( use ) {
21+ createReturnChips ( use , cardID = - 1 ) {
2322 const chipReturn = this ;
2423 const board = chipReturn . scene ;
2524 const chipOrder = new Map ( [
@@ -41,11 +40,15 @@ export class returnChips extends Phaser.GameObjects.DOMElement {
4140 this . setVisible ( true ) ;
4241 this . removeAllListeners ( ) ;
4342
44- if ( use === "chip_overflow" ) {
45- const chipsNeeded =
46- chipReturn . sumObj ( board . gameState . players [ globals . playerID . toString ( ) ] . player_chips ) +
47- chipReturn . sumArr ( board . cachedChips ) -
48- 10 ;
43+ if ( use === "chip_overflow" || use === "chip_overflow_2" ) {
44+ if ( use === "chip_overflow" ) {
45+ var chipsNeeded =
46+ chipReturn . sumObj ( board . gameState . players [ globals . playerID . toString ( ) ] . player_chips ) +
47+ chipReturn . sumArr ( board . cachedChips ) -
48+ 10 ;
49+ } else {
50+ var chipsNeeded = 1 ;
51+ }
4952 chipReturn . getChildByID ( "return_title" ) . innerHTML = "Too Many Gems!" ;
5053 chipReturn . getChildByID ( "return_subtitle" ) . innerHTML = "Please return " + chipsNeeded . toString ( ) ;
5154 if ( chipsNeeded === 1 ) {
@@ -70,10 +73,17 @@ export class returnChips extends Phaser.GameObjects.DOMElement {
7073 . getChildByID ( "chip_container" )
7174 . getElementsByClassName ( "chip_and_num" )
7275 . item ( i ) . lastElementChild ;
73- og_chipValues [ i ] =
74- board . gameState . players [ globals . playerID . toString ( ) ] . player_chips [ chipOrder . get ( i ) ] +
75- ( i < 5 ? board . cachedChips [ i ] : 0 ) ;
76+ if ( use === "chip_overflow" ) {
77+ og_chipValues [ i ] =
78+ board . gameState . players [ globals . playerID . toString ( ) ] . player_chips [ chipOrder . get ( i ) ] +
79+ ( i < 5 ? board . cachedChips [ i ] : 0 ) ;
80+ } else {
81+ og_chipValues [ i ] =
82+ board . gameState . players [ globals . playerID . toString ( ) ] . player_chips [ chipOrder . get ( i ) ] +
83+ ( i < 5 ? 0 : 1 ) ;
84+ }
7685 og_chipNums [ i ] . innerHTML = og_chipValues [ i ] . toString ( ) ;
86+ og_chipNums [ i ] . style . color = "white" ;
7787
7888 if ( og_chipValues [ i ] >= 1 ) {
7989 plusButtons [ i ] = chipReturn
@@ -94,6 +104,13 @@ export class returnChips extends Phaser.GameObjects.DOMElement {
94104 . item ( i ) . firstElementChild ;
95105 minusButtons [ i ] . disabled = true ;
96106
107+ if ( i === inverseChipMap [ "joker" ] ) {
108+ chipReturn
109+ . getChildByID ( "plus_minus_container" )
110+ . getElementsByClassName ( "plus_minus" )
111+ . item ( i ) . style . opacity = 1 ;
112+ }
113+
97114 returnNums [ i ] = chipReturn . getChildByID ( "num_container" ) . children . item ( i ) ;
98115 returnNums [ i ] . innerHTML = returnValues [ i ] . toString ( ) ;
99116 }
@@ -161,6 +178,136 @@ export class returnChips extends Phaser.GameObjects.DOMElement {
161178 joker : returnValues [ 5 ] ,
162179 } ;
163180
181+ board . boardEvents . emit ( "chips_returned" , returnObj ) ;
182+ chipReturn . reset ( ) ;
183+ } else if ( pressedButton . type === "cancel" ) {
184+ board . boardEvents . off ( "chips_returned" ) ;
185+ chipReturn . reset ( ) ;
186+ }
187+ } ) ;
188+ } else if ( use === "buy_card" ) {
189+ chipReturn . getChildByID ( "return_title" ) . innerHTML = "Buy Card" ;
190+ chipReturn . getChildByID ( "return_subtitle" ) . innerHTML = "Please spend necessary gems" ;
191+ chipReturn . getChildByID ( "submit_chips" ) . disabled = false ;
192+
193+ const player = board . gameState . players [ globals . playerID . toString ( ) ] ;
194+
195+ let og_chipNums = [ ] ;
196+ let og_chipValues = [ ] ;
197+ let plusButtons = [ ] ;
198+ let minusButtons = [ ] ;
199+ let returnNums = [ ] ;
200+ let returnValues = [ ] ;
201+
202+ let returnDict = board . calculateReturn ( cardID ) ;
203+ let emptyJokers = player . player_chips [ "joker" ] - returnDict . joker ;
204+
205+ for ( let i = 0 ; i < Object . keys ( returnDict ) . length ; i ++ ) {
206+ og_chipValues [ i ] = returnDict [ chipOrder . get ( i ) ] ;
207+ returnValues [ i ] = returnDict [ chipOrder . get ( i ) ] ;
208+
209+ og_chipNums [ i ] = chipReturn
210+ . getChildByID ( "chip_container" )
211+ . getElementsByClassName ( "chip_and_num" )
212+ . item ( i ) . lastElementChild ;
213+
214+ og_chipNums [ i ] . innerHTML = player . player_chips [ chipOrder . get ( i ) ] . toString ( ) ;
215+ if ( og_chipValues [ i ] > player . player_chips [ chipOrder . get ( i ) ] ) og_chipNums [ i ] . style . color = "yellow" ;
216+ else og_chipNums [ i ] . style . color = "white" ;
217+
218+ if ( emptyJokers >= 1 && chipOrder . get ( i ) !== "joker" && og_chipValues [ i ] > 0 ) {
219+ minusButtons [ i ] = chipReturn
220+ . getChildByID ( "plus_minus_container" )
221+ . getElementsByClassName ( "plus_minus" )
222+ . item ( i ) . firstElementChild ;
223+ minusButtons [ i ] . disabled = false ;
224+ } else {
225+ minusButtons [ i ] = chipReturn
226+ . getChildByID ( "plus_minus_container" )
227+ . getElementsByClassName ( "plus_minus" )
228+ . item ( i ) . firstElementChild ;
229+ minusButtons [ i ] . disabled = true ;
230+ }
231+ plusButtons [ i ] = chipReturn
232+ . getChildByID ( "plus_minus_container" )
233+ . getElementsByClassName ( "plus_minus" )
234+ . item ( i ) . lastElementChild ;
235+ plusButtons [ i ] . disabled = true ;
236+
237+ if ( i === inverseChipMap [ "joker" ] ) {
238+ chipReturn
239+ . getChildByID ( "plus_minus_container" )
240+ . getElementsByClassName ( "plus_minus" )
241+ . item ( i ) . style . opacity = 0 ;
242+ }
243+
244+ returnNums [ i ] = chipReturn . getChildByID ( "num_container" ) . children . item ( i ) ;
245+ returnNums [ i ] . innerHTML = returnValues [ i ] . toString ( ) ;
246+ }
247+
248+ chipReturn . addListener ( "click" ) . on ( "click" , function ( event ) {
249+ let pressedButton = { type : "" , id : - 1 } ;
250+ if ( event . target . parentNode . className === "plus_minus" ) {
251+ pressedButton . type = event . target . className ;
252+ pressedButton . id = inverseChipMap [ event . target . parentNode . id . split ( "_" ) . pop ( ) ] ;
253+ } else if ( event . target . id === "submit_chips" ) {
254+ pressedButton . type = "submit" ;
255+ } else if ( event . target . id === "cancel_chips" ) {
256+ pressedButton . type = "cancel" ;
257+ }
258+
259+ if ( pressedButton . type === "plus" ) {
260+ returnValues [ pressedButton . id ] += 1 ;
261+ returnValues [ inverseChipMap . joker ] -= 1 ;
262+ emptyJokers += 1 ;
263+
264+ if ( returnValues [ pressedButton . id ] === og_chipValues [ pressedButton . id ] ) {
265+ og_chipNums [ pressedButton . id ] . style . color = "white" ;
266+ }
267+
268+ returnNums [ pressedButton . id ] . innerHTML = returnValues [ pressedButton . id ] . toString ( ) ;
269+ returnNums [ inverseChipMap . joker ] . innerHTML = returnValues [ inverseChipMap . joker ] . toString ( ) ;
270+
271+ if (
272+ returnValues [ pressedButton . id ] >= og_chipValues [ pressedButton . id ] ||
273+ returnValues [ pressedButton . id ] >= player . player_chips [ chipOrder . get ( pressedButton . id ) ]
274+ ) {
275+ plusButtons [ pressedButton . id ] . disabled = true ;
276+ }
277+
278+ for ( let i = 0 ; i < minusButtons . length ; i ++ )
279+ minusButtons [ i ] . disabled = ! ( returnValues [ i ] > 0 && i !== inverseChipMap . joker ) ;
280+ } else if ( pressedButton . type === "minus" ) {
281+ returnValues [ pressedButton . id ] -= 1 ;
282+ returnValues [ inverseChipMap . joker ] += 1 ;
283+ emptyJokers -= 1 ;
284+
285+ returnNums [ pressedButton . id ] . innerHTML = returnValues [ pressedButton . id ] . toString ( ) ;
286+ returnNums [ inverseChipMap . joker ] . innerHTML = returnValues [ inverseChipMap . joker ] . toString ( ) ;
287+ og_chipNums [ pressedButton . id ] . style . color = "yellow" ;
288+
289+ if ( returnValues [ pressedButton . id ] <= 0 ) {
290+ minusButtons [ pressedButton . id ] . disabled = true ;
291+ }
292+
293+ plusButtons [ pressedButton . id ] . disabled = false ;
294+
295+ for ( let i = 0 ; i < minusButtons . length ; i ++ )
296+ minusButtons [ i ] . disabled = ! (
297+ returnValues [ i ] > 0 &&
298+ emptyJokers >= 1 &&
299+ i !== inverseChipMap . joker
300+ ) ;
301+ } else if ( pressedButton . type === "submit" ) {
302+ const returnObj = {
303+ diamond : returnValues [ 0 ] ,
304+ sapphire : returnValues [ 1 ] ,
305+ emerald : returnValues [ 2 ] ,
306+ ruby : returnValues [ 3 ] ,
307+ onyx : returnValues [ 4 ] ,
308+ joker : returnValues [ 5 ] ,
309+ } ;
310+
164311 board . boardEvents . emit ( "chips_returned" , returnObj ) ;
165312 chipReturn . reset ( ) ;
166313 } else if ( pressedButton . type === "cancel" ) {
0 commit comments