diff options
author | Tor Andersson <tor@ccxvii.net> | 2025-04-21 09:20:13 +0200 |
---|---|---|
committer | Tor Andersson <tor@ccxvii.net> | 2025-04-21 09:40:47 +0200 |
commit | 9803f79ed8776723dc7ac98108bc66879f921d23 (patch) | |
tree | 92795f2ae4e199b0c61e5480cc9d7b44fed42d60 | |
parent | c97ecaf4342a1073fa87ebe74b40de9bcbaed434 (diff) | |
download | vijayanagara-9803f79ed8776723dc7ac98108bc66879f921d23.tar.gz |
Fix replay view of discard pile.
In the replay mode the view object is not serialized to JSON before
viewing, so we cannot rely on the JSON representation dropping any
properties with the value "undefined".
Don't use (property in object) to check if something is undefined.
Initialize game.discard pile in on_setup as well.
-rw-r--r-- | play.js | 3 | ||||
-rw-r--r-- | rules.js | 11 |
2 files changed, 5 insertions, 9 deletions
@@ -969,8 +969,7 @@ function is_stacked() { } function update_discard() { - // TODO when rewind and needs to empty - if ("discard" in view) { + if (view.discard) { let stacked = is_stacked() ui.discard_pile.style.flexDirection = (stacked ? "column" : "row") for (let i = 0; i < 4; ++i) { @@ -140,13 +140,14 @@ exports.view = function (state, role) { dice: game.dice, } - if (game.cmd && "attacker" in game.cmd) { + if (game.cmd && game.cmd.attacker !== undefined) { view.attack = { where: game.cmd.where, attacker: game.cmd.attacker, target: game.cmd.target } - if ("n_units" in game.cmd) view.attack.n_units = game.cmd.n_units + if (game.cmd.n_units !== undefined) + view.attack.n_units = game.cmd.n_units } if (game.result) { @@ -252,7 +253,7 @@ exports.setup = function (seed, scenario, _options) { cavalry: Array(10).fill(AVAILABLE), deck: [], of_gods_and_kings: [null, null, 0], - // discard: [], + discard: [], order: [], cmd: { type: null, @@ -407,10 +408,6 @@ function end_card() { } function update_discard() { - if ("discard" in game === false) { - game.discard = [] - } - if (this_card() === 45) game.discard = [45] else if (this_card() === 46) |