Skip to content

Commit c0cd5a3

Browse files
zheskettgheskett
andauthored
You can now buy cards (#16)
* You can now buy cards * Various bug/display fixes * Make joker selection buttons invisible for buy card to eliminate visual redundancy Co-authored-by: Gregory Heskett <gheskett@gmail.com>
1 parent 6925865 commit c0cd5a3

8 files changed

Lines changed: 675 additions & 157 deletions

File tree

53.3 KB
Loading
22.9 KB
Loading
-503 Bytes
Loading

phaser/src/classes/card.js

Lines changed: 380 additions & 77 deletions
Large diffs are not rendered by default.

phaser/src/classes/returnChips.js

Lines changed: 157 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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") {
Lines changed: 58 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,66 @@
1-
import { card } from "./card";
1+
import {card} from "./card";
22

33
export class serverManager {
4-
lookUpCard(database, cardId) {
5-
//TODO: actual numbers
6-
if (cardId == -1) {
7-
return {
8-
"card_id" : 0,
9-
"rank" : 1,
10-
"prestige_points" : 0,
11-
"gem_type" : "diamond",
12-
"diamond" : 0,
13-
"sapphire" : 0,
14-
"emerald" : 0,
15-
"ruby" : 0,
16-
"onyx" : 0
17-
};
18-
}
4+
lookUpCard(database, cardId) {
5+
//TODO: actual numbers
6+
if (cardId == -1) {
7+
return {
8+
card_id: 0,
9+
rank: 1,
10+
prestige_points: 0,
11+
gem_type: "diamond",
12+
diamond: 0,
13+
sapphire: 0,
14+
emerald: 0,
15+
ruby: 0,
16+
onyx: 0,
17+
};
18+
}
1919

20-
let card = database[cardId]
20+
let card = database[cardId];
2121

22-
return {
23-
"card_id" : card.card_id,
24-
"rank" : card.rank,
25-
"prestige_points" : card.prestige_points,
26-
"gem_type" : card.gem_type,
27-
"diamond" : card.diamond,
28-
"sapphire" : card.sapphire,
29-
"emerald" : card.emerald,
30-
"ruby" : card.ruby,
31-
"onyx" : card.onyx
32-
};
33-
}
22+
return {
23+
card_id: card.card_id,
24+
rank: card.rank,
25+
prestige_points: card.prestige_points,
26+
gem_type: card.gem_type,
27+
diamond: card.diamond,
28+
sapphire: card.sapphire,
29+
emerald: card.emerald,
30+
ruby: card.ruby,
31+
onyx: card.onyx,
32+
};
33+
}
3434

35-
lookUpNoble(database, nobleId) {
36-
//TODO: actual numbers
37-
if (nobleId == -1) {
38-
return {
39-
"noble_id" : 0,
40-
"prestige_points" : 0,
41-
"diamond" : 0,
42-
"sapphire" : 0,
43-
"emerald" : 0,
44-
"ruby" : 0,
45-
"onyx" : 0
46-
};
47-
}
35+
lookUpNoble(database, nobleId) {
36+
//TODO: actual numbers
37+
if (nobleId == -1) {
38+
return {
39+
noble_id: 0,
40+
prestige_points: 0,
41+
diamond: 0,
42+
sapphire: 0,
43+
emerald: 0,
44+
ruby: 0,
45+
onyx: 0,
46+
};
47+
}
4848

49-
let noble = database[nobleId]
49+
let noble = database[nobleId];
5050

51-
return {
52-
"noble_id" : noble.noble_id,
53-
"prestige_points" : noble.prestige_points,
54-
"diamond" : noble.diamond,
55-
"sapphire" : noble.sapphire,
56-
"emerald" : noble.emerald,
57-
"ruby" : noble.ruby,
58-
"onyx" : noble.onyx
59-
};
60-
}
51+
return {
52+
noble_id: noble.noble_id,
53+
prestige_points: noble.prestige_points,
54+
diamond: noble.diamond,
55+
sapphire: noble.sapphire,
56+
emerald: noble.emerald,
57+
ruby: noble.ruby,
58+
onyx: noble.onyx,
59+
};
60+
}
6161

62-
lookUpFieldChips(game, chipType) {
63-
if (game == null)
64-
return 0;
65-
return game.field_chips[chipType];
66-
}
67-
}
62+
lookUpFieldChips(game, chipType) {
63+
if (game == null) return 0;
64+
return game.field_chips[chipType];
65+
}
66+
}

0 commit comments

Comments
 (0)