diff options
Diffstat (limited to 'play.js')
-rw-r--r-- | play.js | 54 |
1 files changed, 46 insertions, 8 deletions
@@ -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) |