summaryrefslogtreecommitdiff
path: root/play.js
diff options
context:
space:
mode:
authorJoël Simoneau <simoneaujoel@gmail.com>2024-11-05 13:15:15 -0500
committerJoël Simoneau <simoneaujoel@gmail.com>2024-11-05 13:15:15 -0500
commit64d00d039aa3bf0aec0e6d453de34cd94ec5a51d (patch)
treeb8a9d6cd36ca3899e9d40438a897d3ee1049da2e /play.js
parent8ded7faaaa113d749546edfb21113d43ed406623 (diff)
downloadvijayanagara-64d00d039aa3bf0aec0e6d453de34cd94ec5a51d.tar.gz
Cavalry.
Diffstat (limited to 'play.js')
-rw-r--r--play.js54
1 files changed, 46 insertions, 8 deletions
diff --git a/play.js b/play.js
index 6923502..1187b79 100644
--- a/play.js
+++ b/play.js
@@ -6,6 +6,7 @@
const first_piece = data.first_piece
const last_piece = data.last_piece
+const last_cavalry = 9
// :r !python3 tools/genlayout.py
const LAYOUT = {
@@ -436,6 +437,7 @@ let ui = {
status: document.getElementById("status"),
spaces: [],
control: [],
+ cavalry: [],
card_tip: document.getElementById("card_tip"),
this_card: document.getElementById("this_card"),
shaded_event: document.getElementById("shaded_event"),
@@ -451,14 +453,6 @@ let ui = {
token_bk_influence: document.getElementById("token_bk_influence"),
token_ve_influence: document.getElementById("token_ve_influence"),
token_mongol_cavalry: document.getElementById("token_mongol_cavalry"),
- cavalry_1: document.getElementById("cavalry_1"),
- cavalry_2: document.getElementById("cavalry_2"),
- cavalry_3: document.getElementById("cavalry_3"),
- cavalry_4: document.getElementById("cavalry_4"),
- cavalry_5: document.getElementById("cavalry_5"),
- cavalry_6: document.getElementById("cavalry_6"),
- cavalry_7: document.getElementById("cavalry_7"),
- cavalry_8: document.getElementById("cavalry_8"),
},
pieces: [],
resources: [
@@ -523,6 +517,14 @@ function init_ui() {
ui.unshaded_event.onmouseenter = on_focus_unshaded_event
ui.unshaded_event.onmouseleave = on_focus_this_event
+ // player cavalry tokens
+ for (let i = 0; i <= LAST_CAVALRY; ++i) {
+ let e = null
+ ui.cavalry[i] = e = create("div", { className: "token cavalry charge" })
+ document.getElementById("tokens").appendChild(e)
+ register_action(e, "token", i)
+ }
+
for (let s = 0; s < 26; ++s) {
let e = null
@@ -637,6 +639,12 @@ function get_layout_xy(s, f = "Center") {
return LAYOUT_CACHE[f][s]
}
+function filter_calvary_tokens(list, faction) {
+ for (let i = 0; i <= last_cavalry; ++i)
+ if (view.cavalry[i] === faction)
+ list.push(ui.cavalry[i])
+}
+
function filter_piece_list(list, space, faction, type) {
for (let i = first_piece[faction][type]; i <= last_piece[faction][type]; ++i)
if (view.pieces[i] === space)
@@ -727,6 +735,15 @@ function layout_available_bases(list, x0, y0, rows, dx, dy) {
}
}
+function layout_cavalry(list, x0, y0, dy) {
+ let x = x0
+ let y = y0
+ let ll = list.length
+ for (let i = 0; i < ll; ++i) {
+ place_piece(list[ll-i-1], x, y + (dy * (ll-i)), ll-i)
+ }
+}
+
let sop_xy = [
[876, 1445, 0, 13], // ELIGIBLE
[876, 1307, 11, 0], // SOP_LIMITED_COMMAND
@@ -856,6 +873,9 @@ function on_update() {
ui.resources[BK].classList.toggle("action", is_action("resources", BK))
ui.resources[VE].classList.toggle("action", is_action("resources", VE))
+ for (let i = 0; i <= LAST_CAVALRY; ++i)
+ ui.cavalry[i].classList.toggle("action", is_action("token", i))
+
update_player_active(NAME_DS, view.current === DS)
update_player_active(NAME_VE, view.current === VE)
update_player_active(NAME_BK, view.current === BK)
@@ -939,6 +959,24 @@ function on_update() {
}
}
+ // layout cavalry
+ items.length = 0
+ filter_calvary_tokens(items, DS)
+ layout_cavalry(items, 1125, 120, 14)
+
+ items.length = 0
+ filter_calvary_tokens(items, BK)
+ layout_cavalry(items, 200, 935, 14)
+
+ items.length = 0
+ filter_calvary_tokens(items, VE)
+ layout_cavalry(items, 200, 1435, 14)
+
+ items.length = 0
+ filter_calvary_tokens(items, AVAILABLE)
+ layout_cavalry(items, 725, 90, 14)
+
+ // layout pieces
items.length = 0
filter_piece_list(items, AVAILABLE, DS, DISC)
layout_available_bases(items, 1050, 250, 1, 45, 0)