fix(client_web): "jan de retour" location

This commit is contained in:
Henri Bourcereau 2026-04-10 20:25:49 +02:00
parent c0409d6121
commit 874a302524
4 changed files with 74 additions and 77 deletions

View file

@ -785,13 +785,13 @@ body {
.board-quarter .field.zone-petit:nth-child(even), .board-quarter .field.zone-petit:nth-child(even),
.board-quarter .field.zone-grand:nth-child(even) { --fc: var(--field-ivory); } .board-quarter .field.zone-grand:nth-child(even) { --fc: var(--field-ivory); }
/* Jan de retour — cooler: dark teal / silvery-green ivory */ /* Opponent's grand-jan — cooler: dark teal / silvery-green ivory */
.board-quarter .field.zone-retour:nth-child(odd) { --fc: #1e3d32; } .board-quarter .field.zone-opponent:nth-child(odd) { --fc: #1e3d32; }
.board-quarter .field.zone-retour:nth-child(even) { --fc: #e5eadc; } .board-quarter .field.zone-opponent:nth-child(even) { --fc: #e5eadc; }
/* Dernier jan — warmer: amber-brown / warm amber ivory */ /* Jan de retour — warmer: amber-brown / warm amber ivory */
.board-quarter .field.zone-dernier:nth-child(odd) { --fc: #6a2810; } .board-quarter .field.zone-retour:nth-child(odd) { --fc: #6a2810; }
.board-quarter .field.zone-dernier:nth-child(even) { --fc: #f2dfa0; } .board-quarter .field.zone-retour:nth-child(even) { --fc: #f2dfa0; }
/* ── Rest corner (§3) — before .clickable so green wins when interactive ── */ /* ── Rest corner (§3) — before .clickable so green wins when interactive ── */
.field.corner { --fc: var(--field-corner) !important; } .field.corner { --fc: var(--field-corner) !important; }

View file

@ -32,8 +32,8 @@ fn field_zone_class(field_num: u8) -> &'static str {
match field_num { match field_num {
1..=6 => "zone-petit", 1..=6 => "zone-petit",
7..=12 => "zone-grand", 7..=12 => "zone-grand",
13..=18 => "zone-retour", 13..=18 => "zone-opponent",
19..=24 => "zone-dernier", 19..=24 => "zone-retour",
_ => "", _ => "",
} }
} }
@ -143,7 +143,6 @@ fn field_center(f: usize, is_white: bool) -> Option<(f32, f32)> {
Some((x, y)) Some((x, y))
} }
/// SVG `<g>` element drawing one arrow (shadow + gold) from `fp` to `tp`. /// SVG `<g>` element drawing one arrow (shadow + gold) from `fp` to `tp`.
fn arrow_svg(fp: (f32, f32), tp: (f32, f32)) -> AnyView { fn arrow_svg(fp: (f32, f32), tp: (f32, f32)) -> AnyView {
let (x1, y1) = fp; let (x1, y1) = fp;
@ -515,7 +514,6 @@ pub fn Board(
} }
}; };
let (tl, tr, bl, br) = if is_white { let (tl, tr, bl, br) = if is_white {
(&TOP_LEFT_W, &TOP_RIGHT_W, &BOT_LEFT_W, &BOT_RIGHT_W) (&TOP_LEFT_W, &TOP_RIGHT_W, &BOT_LEFT_W, &BOT_RIGHT_W)
} else { } else {
@ -524,9 +522,9 @@ pub fn Board(
// Zone label pairs (top-left, top-right, bot-left, bot-right) per perspective. // Zone label pairs (top-left, top-right, bot-left, bot-right) per perspective.
let (label_tl, label_tr, label_bl, label_br) = if is_white { let (label_tl, label_tr, label_bl, label_br) = if is_white {
("jan de retour", "dernier jan", "grand jan", "petit jan") ("", "jan de retour", "grand jan", "petit jan")
} else { } else {
("petit jan", "grand jan", "dernier jan", "jan de retour") ("petit jan", "grand jan", "jan de retour", "")
}; };
view! { view! {

View file

@ -37,7 +37,7 @@ The board body between triangles becomes visible as the wood/felt surface — th
**Proposals**: **Proposals**:
### 2a. Zone labels ### 2a. Zone labels
Add thin labels (`"petit jan"`, `"grand jan"`, `"jan de retour"`, `"dernier jan"`) beneath the board-row (or as a subtle strip above/below the quarter). These should use the serif font at very small size and low opacity — decorative, not noisy. Add thin labels (`"petit jan"`, `"grand jan"`, `"jan de retour"`) beneath the board-row (or as a subtle strip above/below the quarter). These should use the serif font at very small size and low opacity — decorative, not noisy.
### 2b. Field color shift per zone ### 2b. Field color shift per zone
The physical game uses alternating colors within each quarter, but different quarters can use slightly different base hues: The physical game uses alternating colors within each quarter, but different quarters can use slightly different base hues:

View file

@ -3,7 +3,7 @@
This table maps the French game terminology to the English terms used in this codebase (primarily the `store` crate). Where a code identifier exists, it is shown in `monospace`. This table maps the French game terminology to the English terms used in this codebase (primarily the `store` crate). Where a code identifier exists, it is shown in `monospace`.
| French | English (code) | Notes | | French | English (code) | Notes |
|---|---|---| | -------------------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------- |
| tablier | board | `Board` | | tablier | board | `Board` |
| case / flèche | field | `Field` (124, 0 = exit); "flèche" (arrow) and "case" both refer to a field/point | | case / flèche | field | `Field` (124, 0 = exit); "flèche" (arrow) and "case" both refer to a field/point |
| demi-case | half-field | A field occupied by exactly one checker | | demi-case | half-field | A field occupied by exactly one checker |
@ -14,8 +14,7 @@ This table maps the French game terminology to the English terms used in this co
| bande de sortie | exit rail | Same rail, used as an extra field value during exit | | bande de sortie | exit rail | Same rail, used as an extra field value during exit |
| petit jan | small jan | Fields 16; `is_field_in_small_jan` | | petit jan | small jan | Fields 16; `is_field_in_small_jan` |
| grand jan | big jan | Fields 712 (White's side, opponent's near zone) | | grand jan | big jan | Fields 712 (White's side, opponent's near zone) |
| jan de retour | return jan | Fields 1318; same fields as opponent's small jan | | jan de retour | return jan | Fields 1924; same fields as opponent's small jan ; where checkers gather before exiting; `last quarter` |
| dernier jan / jan de retour | last jan / last quarter | Fields 1924; where checkers gather before exiting; `last quarter` |
| table des petits jans | small jan table | The board half containing both players' small jans (fields 112) | | table des petits jans | small jan table | The board half containing both players' small jans (fields 112) |
| table des grands jans | big jan table | The board half containing both players' big jans (fields 1324) | | table des grands jans | big jan table | The board half containing both players' big jans (fields 1324) |
| plein (d'un jan) | filled (jan) | All 6 fields of a jan hold ≥ 2 checkers | | plein (d'un jan) | filled (jan) | All 6 fields of a jan hold ≥ 2 checkers |