Campaign progression: mission browser integration
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 17.4k
- Forks
- 3k
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 14
Description
Part 3 of #22600, depends on #22602. Make the existing mission browser progression-aware: locked missions are hidden until unlocked, and completed missions show their playthrough record. This is the display side of @pchote's original steps 2–3, and the modern take on what #15020 attempted in 2018.
Design
- The browser reads the progress store (C#; no Lua involved on the read side).
- The existing browser layout and
missions.yamlgrouping stay — this decorates, it does not redesign (the campaign-specific selection screen is milestone 5's separate UI). - Locked missions are hidden (not greyed) by default, matching #17067's "unavailable missions" behavior; an unlock-all button will likely need to be added to not regress the experience for players that don't care about the campaign progression.
Work items
- Hide missions whose unlock state (from the store's standard schema) says locked; missions with no campaign data behave exactly as today
- Show playthrough info for completed missions: beaten difficulty, completion time, score
- Coordinate with #22321 (mission browser setting saving) so the two features don't collide
Out of scope
Choosing the next mission mid-campaign (milestone 5), any changes to how missions launch.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the existing mission browser, its missions.yaml grouping, and the C# progress store's standard schema. Implement the display behavior without redesigning the layout: hide locked missions, preserve missions with no campaign data, and show difficulty, completion time, and score for completed missions. Check coordination with #22321 so setting persistence does not conflict.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- game-dev
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100