From d167c9891968b02627fc240b0b75ae9fd9b770af Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Tue, 11 Mar 2025 01:05:43 +0100 Subject: More UI tweaks. --- play.css | 4 ++++ play.js | 26 ++++++++++++++------------ rules.js | 38 +++++++++++++++++--------------------- rules.ts | 38 +++++++++++++++++--------------------- types.d.ts | 2 +- 5 files changed, 53 insertions(+), 55 deletions(-) diff --git a/play.css b/play.css index 5765e9a..d90f422 100644 --- a/play.css +++ b/play.css @@ -210,6 +210,10 @@ body header.fascist.your_turn { background-color: hsl(30, 35%, 65%); } height: 45px; } +.token:not(.action) { + pointer-events: none; +} + /* :r! node tools/gencolor.js */ .token.white { background-color: #bbbbbb; border-color: #d6d6d6 #737373 #737373 #d6d6d6; box-shadow: 0 0 0 1px #323232, 0px 1px 4px #0008; } .token.red { background-color: #ef0500; border-color: #ff5d49 #b40000 #b40000 #ff5d49; box-shadow: 0 0 0 1px #790000, 0px 1px 4px #0008; } diff --git a/play.js b/play.js index e4ed289..b9ebde8 100644 --- a/play.js +++ b/play.js @@ -180,13 +180,6 @@ function build_track(t, action_name, track_name, a, b) { for (let s = a; s <= b; ++s) { const bm = t * 11 + s - e = (ui.blank_markers[bm] = document.createElement("div")) - e.className = "red token blank hide" - e.style.top = Math.round(y+4) + "px" - e.style.left = Math.round(x+3) + "px" - register_action(e, "blank_marker", bm) - ui.map_container.appendChild(e) - ui.tracks_x[t][s] = Math.round(x) + 4 + "px" e = ui.tracks[t][s] = document.createElement("div") e.className = "track" @@ -195,6 +188,13 @@ function build_track(t, action_name, track_name, a, b) { register_action(e, action_name, s) ui.map_container.appendChild(e) + e = (ui.blank_markers[bm] = document.createElement("div")) + e.className = "red token blank hide" + e.style.top = Math.round(y+4) + "px" + e.style.left = Math.round(x+3) + "px" + register_action(e, "blank_marker", bm) + ui.map_container.appendChild(e) + x += 60.5 } @@ -538,17 +538,19 @@ function on_update() { // eslint-disable-line no-unused-vars action_button("play_to_tableau", "Action Points") action_button("play_for_event", "Event") action_button("remove_blank_marker", "Remove Blank marker") - action_button("use_ap", "Use Action Points") - action_button("use_momentum", "Play second card (Momentum)") - action_button("use_morale_bonus", "Use Morale Bonus") - action_button("spend_hp", "Spend Hero Points") + action_button("use_momentum", "Momentum") + action_button("use_ap", "Action Points") + action_button("use_morale_bonus", "Morale Bonus") + action_button("skip", "Skip") action_button("yes", "Yes") action_button("no", "No") - action_button("skip", "Skip") action_button("confirm", "Confirm") action_button("done", "Done") + + action_button("spend_hp", "Hero Points") + action_button("end_turn", "End Turn") action_button("undo", "Undo") diff --git a/rules.js b/rules.js index 465e725..da68d1e 100644 --- a/rules.js +++ b/rules.js @@ -673,7 +673,7 @@ states.add_card_to_tableau = { inactive: 'add a card to their tableau', prompt() { gen_spend_hero_points(); - view.prompt = 'Choose a card to add to your tableau.'; + view.prompt = 'Add a card to your tableau.'; const faction = get_active_faction(); for (const c of game.hands[faction]) { gen_action_card(c); @@ -932,7 +932,7 @@ states.play_card = { inactive: 'choose a card', prompt() { gen_spend_hero_points(); - view.prompt = 'Choose a card to play'; + view.prompt = 'Play a card.'; const faction = get_active_faction(); const hand = game.hands[faction]; for (let c of hand) { @@ -993,7 +993,7 @@ states.choose_card = { states.choose_final_bid = { inactive: 'choose Final Bid', prompt() { - view.prompt = 'Choose a card to add to the Final Bid'; + view.prompt = 'Add a card to the Final Bid.'; const faction = get_active_faction(); for (let c of game.hands[faction]) { if (!game.selected_cards[faction].includes(c)) { @@ -1047,7 +1047,7 @@ states.choose_medallion = { inactive: 'choose a medallion', prompt() { gen_spend_hero_points(); - view.prompt = 'Choose a medallion'; + view.prompt = 'Choose a Medallion.'; for (let m of game.medallions.pool) { gen_action_medallion(m); } @@ -1086,10 +1086,7 @@ states.choose_medallion = { states.confirm_turn = { inactive: 'confirm their turn', prompt() { - if (game.fascist) - view.prompt = 'Fascist Test: Done.'; - else - view.prompt = 'Confirm your actions or undo'; + view.prompt = 'You will not be able to undo this action.'; gen_action('confirm'); }, confirm() { @@ -1299,10 +1296,10 @@ states.move_track = { else view.prompt = `Move ${name} ${-value} steps down.`; if (track === data_1.GOVERNMENT && value === data_1.TOWARDS_CENTER) { - view.prompt = `Move ${name} towards center`; + view.prompt = `Move ${name} towards center.`; } else if (track === data_1.GOVERNMENT && value === data_1.AWAY_FROM_CENTER) { - view.prompt = `Move ${name} away from center`; + view.prompt = `Move ${name} away from center.`; } if (track === data_1.LIBERTY_OR_COLLECTIVIZATION) { gen_move_track(data_1.LIBERTY, game.tracks[data_1.LIBERTY] + value); @@ -1452,15 +1449,15 @@ function resolve_spend_hp() { } function set_player_turn_prompt({ can_play_card, use_ap, use_momentum, use_morale_bonus, }) { if (can_play_card) - view.prompt = "Player Turn: Play card for Action Points or for the Event."; + view.prompt = "Play card for Action Points or for the Event."; else if (use_momentum) - view.prompt = "Player Turn: Play a second card."; + view.prompt = "Play a second card."; else if (use_ap && use_morale_bonus) - view.prompt = "Player Turn: Use Action Points and Morale Bonus."; + view.prompt = "Use Action Points and Morale Bonus."; else if (use_morale_bonus) - view.prompt = "Player Turn: Use Morale Bonus."; + view.prompt = "Use Morale Bonus."; else if (use_ap) - view.prompt = "Player Turn: Use Action Points."; + view.prompt = "Use Action Points."; else view.prompt = "Player Turn: Done."; } @@ -1655,7 +1652,7 @@ states.return_card = { prompt() { const faction = get_active_faction(); gen_spend_hero_points(); - view.prompt = 'Choose a card to return to your hand'; + view.prompt = 'Return a card to your hand.'; view.trash = game.trash[faction]; let possible = false; for (let c of game.trash[faction]) { @@ -1793,16 +1790,15 @@ states.swap_card_tableau_hand = { inactive: 'swap cards', prompt() { gen_spend_hero_points(); - view.prompt = - 'Choose a card in your tableau and a card in your hand to swap'; + view.prompt = 'Swap a card in your tableau with a card in your hand.'; const faction = get_active_faction(); gen_action('skip'); if (game.tableaus[faction].length === 0) { - view.prompt = 'No card in your tableau to swap. You must skip'; + view.prompt = 'No card in your tableau to swap.'; return; } if (game.hands[faction].length === 0) { - view.prompt = 'No card in your hand to swap. You must skip'; + view.prompt = 'No card in your hand to swap.'; return; } if (!game.selected_cards[faction].some((card_id) => game.hands[faction].includes(card_id))) { @@ -2244,7 +2240,7 @@ function play_card_to_tableau(faction) { return card; } function resolve_fascist_test() { - game.fascist = 1; + game.fascist = 2; log_h2('Fascist Test', 'fascist'); const test = get_current_event().test; const status = game.fronts[test.front].status; diff --git a/rules.ts b/rules.ts index 2945b60..7cf04d5 100644 --- a/rules.ts +++ b/rules.ts @@ -901,7 +901,7 @@ states.add_card_to_tableau = { inactive: 'add a card to their tableau', prompt() { gen_spend_hero_points(); - view.prompt = 'Choose a card to add to your tableau.'; + view.prompt = 'Add a card to your tableau.'; const faction = get_active_faction(); for (const c of game.hands[faction]) { gen_action_card(c); @@ -1186,7 +1186,7 @@ states.play_card = { prompt() { gen_spend_hero_points(); - view.prompt = 'Choose a card to play'; + view.prompt = 'Play a card.'; const faction = get_active_faction(); @@ -1256,7 +1256,7 @@ states.choose_card = { states.choose_final_bid = { inactive: 'choose Final Bid', prompt() { - view.prompt = 'Choose a card to add to the Final Bid'; + view.prompt = 'Add a card to the Final Bid.'; const faction = get_active_faction(); for (let c of game.hands[faction]) { if (!game.selected_cards[faction].includes(c)) { @@ -1332,7 +1332,7 @@ states.choose_medallion = { inactive: 'choose a medallion', prompt() { gen_spend_hero_points(); - view.prompt = 'Choose a medallion'; + view.prompt = 'Choose a Medallion.'; for (let m of game.medallions.pool) { gen_action_medallion(m); } @@ -1376,10 +1376,7 @@ states.choose_medallion = { states.confirm_turn = { inactive: 'confirm their turn', prompt() { - if (game.fascist) - view.prompt = 'Fascist Test: Done.'; - else - view.prompt = 'Confirm your actions or undo'; + view.prompt = 'You will not be able to undo this action.'; gen_action('confirm'); }, confirm() { @@ -1612,9 +1609,9 @@ states.move_track = { else view.prompt = `Move ${name} ${-value} steps down.`; if (track === GOVERNMENT && value === TOWARDS_CENTER) { - view.prompt = `Move ${name} towards center`; + view.prompt = `Move ${name} towards center.`; } else if (track === GOVERNMENT && value === AWAY_FROM_CENTER) { - view.prompt = `Move ${name} away from center`; + view.prompt = `Move ${name} away from center.`; } if (track === LIBERTY_OR_COLLECTIVIZATION) { @@ -1799,15 +1796,15 @@ function set_player_turn_prompt({ use_morale_bonus, }: PlayerTurnArgs & { can_spend_hp: boolean; can_play_card: boolean }) { if (can_play_card) - view.prompt = "Player Turn: Play card for Action Points or for the Event." + view.prompt = "Play card for Action Points or for the Event." else if (use_momentum) - view.prompt = "Player Turn: Play a second card." + view.prompt = "Play a second card." else if (use_ap && use_morale_bonus) - view.prompt = "Player Turn: Use Action Points and Morale Bonus." + view.prompt = "Use Action Points and Morale Bonus." else if (use_morale_bonus) - view.prompt = "Player Turn: Use Morale Bonus." + view.prompt = "Use Morale Bonus." else if (use_ap) - view.prompt = "Player Turn: Use Action Points." + view.prompt = "Use Action Points." else view.prompt = "Player Turn: Done." } @@ -2053,7 +2050,7 @@ states.return_card = { prompt() { const faction = get_active_faction(); gen_spend_hero_points(); - view.prompt = 'Choose a card to return to your hand'; + view.prompt = 'Return a card to your hand.'; view.trash = game.trash[faction]; let possible = false; for (let c of game.trash[faction]) { @@ -2213,16 +2210,15 @@ states.swap_card_tableau_hand = { inactive: 'swap cards', prompt() { gen_spend_hero_points(); - view.prompt = - 'Choose a card in your tableau and a card in your hand to swap'; + view.prompt = 'Swap a card in your tableau with a card in your hand.'; const faction = get_active_faction(); gen_action('skip'); if (game.tableaus[faction].length === 0) { - view.prompt = 'No card in your tableau to swap. You must skip'; + view.prompt = 'No card in your tableau to swap.'; return; } if (game.hands[faction].length === 0) { - view.prompt = 'No card in your hand to swap. You must skip'; + view.prompt = 'No card in your hand to swap.'; return; } if ( @@ -2812,7 +2808,7 @@ function play_card_to_tableau(faction: FactionId): PlayerCard { } function resolve_fascist_test() { - game.fascist = 1; + game.fascist = 2; log_h2('Fascist Test', 'fascist'); diff --git a/types.d.ts b/types.d.ts index 4e0daaf..14b584e 100644 --- a/types.d.ts +++ b/types.d.ts @@ -72,7 +72,7 @@ export interface Game { triggered_track_effects: number[]; used_medallions: number[]; glory_current_year?: Record | null; - fascist: 0 | 1; + fascist: 0 | 1 | 2; card_played: 0 | 1; hidden_bag?: 0 | 1; } -- cgit v1.2.3