From f44189593fd8b448663dfa892a0e14a92507fb07 Mon Sep 17 00:00:00 2001 From: Mischa Untaga <99098079+MischaU8@users.noreply.github.com> Date: Tue, 7 Nov 2023 20:57:05 +0100 Subject: campaigner positioning WIP --- play.js | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 3 deletions(-) (limited to 'play.js') diff --git a/play.js b/play.js index 56ddafe..b10d22a 100644 --- a/play.js +++ b/play.js @@ -37,6 +37,9 @@ let ui = { document.getElementById("role_Suffragist"), document.getElementById("role_Opposition"), ], + pieces: document.getElementById("pieces"), + support_campaigner: [], + opposition_campaigner: [], cards: [ null ], us_states: [ null ], regions: [ null ], @@ -100,6 +103,9 @@ const LAYOUT = { "WA": [158, 97], } +const US_STATES_LAYOUT = [ null ] +const REGIONS_LAYOUT = [ null ] + // CARD MENU var card_action_menu = Array.from(document.getElementById("popup").querySelectorAll("li[data-action]")).map(e => e.dataset.action) @@ -244,7 +250,6 @@ function on_click_card(evt) { function on_click_congress(evt) { if (evt.button === 0) { - console.log("congress") if (send_action('congress')) evt.stopPropagation() } @@ -267,6 +272,14 @@ function on_click_us_state(evt) { hide_popup_menu() } +function on_click_campaigner(evt) { + if (evt.button === 0) { + if (send_action('campaigner', evt.target.my_campaigner)) + evt.stopPropagation() + } + hide_popup_menu() +} + function on_click_space(evt) { if (evt.button === 0) { if (send_action('space', evt.target.my_space)) @@ -291,9 +304,24 @@ function create(t, p, ...c) { return e } +function create_campaigner(color, i) { + return create("div", { + className: `piece ${color}`, + my_campaigner: i, + onmousedown: on_click_campaigner + }) +} + function build_user_interface() { let elt + for(let s of US_STATES) { + if (s) US_STATES_LAYOUT.push(LAYOUT[s.code]) + } + for(let r of REGION_NAMES) { + if (r) REGIONS_LAYOUT.push(LAYOUT[r]) + } + ui.congress_box.onmousedown = on_click_congress for (let c = 1; c <= 6; ++c) { elt = ui.congress[c] = create("div", { @@ -328,6 +356,17 @@ function build_user_interface() { elt.addEventListener("mouseenter", on_focus_us_state) elt.addEventListener("mouseleave", on_blur) } + + ui.support_campaigner = [ + create_campaigner('purple1', 1), + create_campaigner('purple2', 2), + create_campaigner('yellow1', 3), + create_campaigner('yellow2', 4) + ] + ui.opposition_campaigner = [ + create_campaigner('red1', 1), + create_campaigner('red2', 2), + ] } function on_focus_card_tip(card_number) { // eslint-disable-line no-unused-vars @@ -461,14 +500,35 @@ function on_update() { // eslint-disable-line no-unused-vars ui.cards[i].classList.toggle("selected", i === view.selected_card) } - for (let i = 1; i <= region_count; ++i) { + for (let i = 1; i < ui.regions.length; ++i) { ui.regions[i].classList.toggle("action", is_region_action(i)) } - for (let i = 1; i <= us_states_count; ++i) { + for (let i = 1; i < ui.us_states.length; ++i) { ui.us_states[i].classList.toggle("action", is_us_state_action(i)) } + + // ui.pieces.replaceChildren() + + for (let i = 0; i < ui.support_campaigner.length; ++i) { + // TODO Cleanup + let campaigner_region = view.support_campaigner[i] + if (campaigner_region) { + ui.pieces.appendChild(ui.support_campaigner[i]) + let [x, y] = REGIONS_LAYOUT[campaigner_region] + ui.support_campaigner[i].style.left = x - 30 + (15 * i) + "px" + ui.support_campaigner[i].style.top = y - 40 + "px" + } else { + ui.support_campaigner[i].remove() + } + } + for (let i = 0; i < ui.opposition_campaigner.length; ++i) { + // TODO + ui.opposition_campaigner[i].classList.toggle("hide", !view.opposition_campaigner[i]) + } + + action_button("commit_1_button", "+1 Button") action_button("defer", "Defer") action_button("match", "Match") -- cgit v1.2.3