summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2025-03-11 01:05:43 +0100
committerTor Andersson <tor@ccxvii.net>2025-03-11 01:08:51 +0100
commitd167c9891968b02627fc240b0b75ae9fd9b770af (patch)
treedbcf68bea4a48771d0f25e42b6ff51133c466b7e
parent0b20f381756c0aab5a2182680f6311a6b4530b0d (diff)
downloadland-and-freedom-d167c9891968b02627fc240b0b75ae9fd9b770af.tar.gz
More UI tweaks.
-rw-r--r--play.css4
-rw-r--r--play.js26
-rw-r--r--rules.js38
-rw-r--r--rules.ts38
-rw-r--r--types.d.ts2
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<FactionId, boolean> | null;
- fascist: 0 | 1;
+ fascist: 0 | 1 | 2;
card_played: 0 | 1;
hidden_bag?: 0 | 1;
}