Skip to content

Sets and neighbourhoods: a box per finished street or neighbourhood; names on the map - #38

Merged
Sagyam merged 1 commit into
mainfrom
claude/sets-neighbourhoods
Nov 7, 2026
Merged

Sagyam merged 1 commit into
mainfrom
claude/sets-neighbourhoods

Conversation

@Sagyam

@Sagyam Sagyam commented Nov 7, 2026

Copy link
Copy Markdown
Owner

Picks up two items PR #37 left in the roadmap: collection sets and neighbourhood names with corner signs. As decided in the thread, a finished set pays a box.

Daemon

  • layout.rs: NEIGHBOURHOODS groups each lot block into one of six: Millbrook, Old Town, Church Hill, The Canal Quarter, The Exchange, Highgate. Parks keep their own names.
  • world.rs: every street with lots and every neighbourhood is a set. Building its last lot opens one box, once. Ruins and renames don't take it back, and renaming doesn't pay again. Odds are STREET_RARE_PCT (15) and NEIGHBOURHOOD_RARE_PCT (40). The pity counter is shared with the goal boxes, and the roll comes from the ledger.
  • economy::open_box now takes the rare odds rather than a Goal.
  • Proto: World.sets (SetInfo: built/total/done), Layout.neighbourhoods, BoxInfo.set. All are serde(default). proto.ts mirrors them.

App

  • Desk: the two sets nearest done appear as rows under today's goals. Town hall: a Sets section lists every set begun.
  • City: each shown block's north-east corner has a green post with two blades naming the streets that meet there. Neighbourhood names float over their blocks as screen-size labels and fade in between 200 and 300 m of camera distance.
  • The mock mirrors the sets.

Checks

  • cargo test (137 in the daemon, incl. a_finished_set_pays_one_box and every_lot_block_is_in_one_neighbourhood), cargo clippy --all-targets and cargo fmt are clean.
  • bun test (46) and tsc pass.
  • Headless screenshots of the City mock: labels zoomed out, and the Main Street / Station Road sign at street level. The City still draws about 40 fps.
  • Not run against the real daemon; there's a new host check for it in the roadmap.

🤖 Generated with Claude Code

…; names on the map

- layout.rs: lot blocks grouped into six named neighbourhoods.
- world.rs: every street with lots and every neighbourhood is a set; building
  its last lot opens one box, once (its own rare odds, shared pity counter).
- World.sets and Layout.neighbourhoods in proto; BoxInfo.set names the set.
- App: the two sets nearest done under today's goals, all begun sets in the
  town hall; a street-name sign at each block's corner; neighbourhood names
  that fade in as the camera pulls back. The mock mirrors the sets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Sagyam
Sagyam merged commit 964b6db into main Nov 7, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant