maniator / maniator/verticopolis

[Bug][P3]: a theatre screen half flush between two theatres still chains them into one unit

Open
#738 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
5
Forks
1
PR merge metrics
No merged PRs in 30d

Description

Deferred from the /gds-code-review of the TDT round-trip fidelity fixes (2026-07-31), Edge Case Hunter layer.

mergeParts now splits a merged cluster by horizontal connectivity as well as by floor window, which fixed the case where two flush recycling centers fused into one 40-wide unit. The inner split reuses the same sameBuilding predicate, which includes the theatre-only screenTouch rule (a screen half flush against a hall half on the same floor merges). So the case the docstring already flagged survives: two independent theatres built flush, where one's screen half abuts the other's hall half, still land in one component and import as a single double-width cinema, losing a theatre.

Pre-existing, not introduced by that change. The width-mismatch report line flags the result to the player. Fixing it needs a way to tell which hall a screen half belongs to, which the format may not carry: worth measuring on the Wine harness against a real save that has two flush theatres before writing code.

Story id: tdt-part-merge-screen-chaining

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with mergeParts, its docstring, and the sameBuilding predicate, then reproduce the case on the Wine harness using a real save containing two flush theatres. Determine whether the format carries enough information to identify each screen half's hall before choosing an implementation. Done means the two theatres import as separate units without regressing the recycling-center split.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
game-dev
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.