Katan: no roads past an opponent's settlement, piece limits, stable layout
Rules - A road may only start from a crossing where the player has a building, or where one of their roads ends AND no opponent's settlement or city stands. roadConnects ignored opponents' buildings, so a road (the computer's included) could be laid straight past a settlement. Also applies to Road Building. - Enforce the piece supply: 15 roads, 5 settlements, 4 cities. It was unlimited. - Tests: building past a settlement and a city, free roads, own settlement not blocking, and running out of each piece. UI - The layout rescaled the board whenever it became the player's turn, because the action buttons only existed then. Everything outside the board now has a fixed height: the action bar always shows every button (disabled, not absent), the prompt is pinned to two lines, player cards always draw every line, and the dice total is always present. Rule recorded in docs/UI-catan.md. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JdMNbY5hLR7FjtfEE712xG
This commit is contained in:
@@ -71,6 +71,14 @@ screen's UI state. The legal-move list stays the gate.
|
||||
size of the deck; it is not known to a client. Card *counts* (`resourceCount`,
|
||||
`devHandCounts`) are public.
|
||||
5. **The state is immutable.** Never mutate it; submit a move.
|
||||
6. **The layout must not move.** Everything outside the board has a *fixed
|
||||
height*, and the board takes whatever is left, so the island's scale is the
|
||||
same all game. Concretely: a control is *enabled or disabled*, never
|
||||
*present or absent* (the action bar always shows every button); text that can
|
||||
vary in length is pinned to a fixed number of lines (`minLines = maxLines`);
|
||||
a line that is sometimes empty is still drawn (a non-breaking space), as the
|
||||
award line on a player card is. A change that makes any non-board element
|
||||
taller or shorter at runtime will rescale the board under the player's thumb.
|
||||
|
||||
## Interaction model (what the player actually does)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user