Adds the Katan screen on top of the merged WALA-119 engine, so Katan can be opened and played from a dev build (it stays hidden from production until two-device play is verified).
Screen (ui/game/catan/): board, players, hand, dice, action bar, and dialogs for discard, robber victim, play-a-card, bank and player trades, trade reply and game over. Portrait and landscape layouts.
Layered so the look can be adapted later without touching the rules: CatanStyle (all colours/sizes, light+dark), CatanText (all wording), CatanGeometry (island → pixels, hit-testing), CatanInteraction (what is tappable / what a tap does, derived only from the engine's legal-move list), stateless CatanBoardView / CatanPanels / CatanDialogs, thin CatanScreen wiring, and CatanPreviews for Android Studio. See docs/UI-catan.md.
Wiring:PlayScreen branch, GameSetupScreen options (3-4 players, game to 5/8/10/12 points), and GameDescriptor.devPreview so dev builds open Katan while production still hides it (available stays false).
Tests:CatanGeometryTest, CatanInteractionTest (setup, building, free roads, robber incl. victim choice, discards, bank trades, offers, dev cards, trade replies — against real engine states), CatanTextTest, plus a CatalogTest for the preview gate.
Testing
CI run 32 on this branch: build, unit tests and lint all green. Nothing published.
Not yet verified
No one has played it on a device. Compose drawing and dialogs are not unit-tested (only the pure layers are).
Two-device (host + guest) play over the LAN is untested.
Known gaps (animations, art, per-seat shapes for colour-blind players, which hexes produced) are listed in docs/UI-catan.md.
Merging
Merging to dev triggers a dev build and Cloudflare deploy. Katan then appears under Board Games on dev installs as Preview · 3–4 players.
## Summary
Adds the Katan screen on top of the merged WALA-119 engine, so Katan can be opened and played from a **dev build** (it stays hidden from production until two-device play is verified).
- **Screen** (`ui/game/catan/`): board, players, hand, dice, action bar, and dialogs for discard, robber victim, play-a-card, bank and player trades, trade reply and game over. Portrait and landscape layouts.
- **Layered so the look can be adapted later** without touching the rules: `CatanStyle` (all colours/sizes, light+dark), `CatanText` (all wording), `CatanGeometry` (island → pixels, hit-testing), `CatanInteraction` (what is tappable / what a tap does, derived only from the engine's legal-move list), stateless `CatanBoardView` / `CatanPanels` / `CatanDialogs`, thin `CatanScreen` wiring, and `CatanPreviews` for Android Studio. See `docs/UI-catan.md`.
- **Wiring:** `PlayScreen` branch, `GameSetupScreen` options (3-4 players, game to 5/8/10/12 points), and `GameDescriptor.devPreview` so dev builds open Katan while production still hides it (`available` stays false).
- **Tests:** `CatanGeometryTest`, `CatanInteractionTest` (setup, building, free roads, robber incl. victim choice, discards, bank trades, offers, dev cards, trade replies — against real engine states), `CatanTextTest`, plus a `CatalogTest` for the preview gate.
## Testing
[CI run 32](https://git.wallacenet.ca/devadmin/ProLibertateGames/actions/runs/32) on this branch: build, unit tests and lint all green. Nothing published.
## Not yet verified
- No one has played it on a device. Compose drawing and dialogs are not unit-tested (only the pure layers are).
- Two-device (host + guest) play over the LAN is untested.
- Known gaps (animations, art, per-seat shapes for colour-blind players, which hexes produced) are listed in `docs/UI-catan.md`.
## Merging
Merging to `dev` triggers a dev build and Cloudflare deploy. Katan then appears under Board Games on dev installs as **Preview · 3–4 players**.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JdMNbY5hLR7FjtfEE712xG
Adds the Katan screen on top of the WALA-119 engine, built in separable layers
so the look, wording, layout and interaction can each be changed alone:
- CatanStyle: every colour and proportion (light/dark), via LocalCatanStyle
- CatanText: every word on screen (pure functions of state)
- CatanGeometry: lattice -> pixels and tap hit-testing (pure, unit-tested)
- CatanInteraction: what is tappable and what a tap means, derived only from the
engine's legal-move list (pure, unit-tested)
- CatanBoardView / CatanPanels / CatanDialogs: stateless composables
- CatanScreen: wiring to MatchController, portrait and landscape layouts
- CatanPreviews: Android Studio previews of real positions
- docs/UI-catan.md: how to adapt each layer, rules of the road, known gaps
Wiring: PlayScreen branch, GameSetupScreen options (3-4 players, game to
5/8/10/12), and a GameDescriptor.devPreview flag so dev builds can open Katan
while production still hides it until two-device play is verified.
Tests: CatanGeometryTest, CatanInteractionTest, CatanTextTest, CatalogTest.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JdMNbY5hLR7FjtfEE712xG
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Adds the Katan screen on top of the merged WALA-119 engine, so Katan can be opened and played from a dev build (it stays hidden from production until two-device play is verified).
ui/game/catan/): board, players, hand, dice, action bar, and dialogs for discard, robber victim, play-a-card, bank and player trades, trade reply and game over. Portrait and landscape layouts.CatanStyle(all colours/sizes, light+dark),CatanText(all wording),CatanGeometry(island → pixels, hit-testing),CatanInteraction(what is tappable / what a tap does, derived only from the engine's legal-move list), statelessCatanBoardView/CatanPanels/CatanDialogs, thinCatanScreenwiring, andCatanPreviewsfor Android Studio. Seedocs/UI-catan.md.PlayScreenbranch,GameSetupScreenoptions (3-4 players, game to 5/8/10/12 points), andGameDescriptor.devPreviewso dev builds open Katan while production still hides it (availablestays false).CatanGeometryTest,CatanInteractionTest(setup, building, free roads, robber incl. victim choice, discards, bank trades, offers, dev cards, trade replies — against real engine states),CatanTextTest, plus aCatalogTestfor the preview gate.Testing
CI run 32 on this branch: build, unit tests and lint all green. Nothing published.
Not yet verified
docs/UI-catan.md.Merging
Merging to
devtriggers a dev build and Cloudflare deploy. Katan then appears under Board Games on dev installs as Preview · 3–4 players.Co-Authored-By: Claude Sonnet 5.5 [email protected]
Claude-Session: https://claude.ai/code/session_01JdMNbY5hLR7FjtfEE712xG