10ba226af7fa1d55a4537954f5d6fc57486ad2bf
Simulation now owns an UnlockState member (constructed before initializeSubsystems(), since BuildingSystem's spawn-gating lambda calls into it via isSchematicUnlocked instead of poking the old m_schematicLevels map directly). The public isXUnlocked accessors become one-line forwards, applySchematicChoice's group-awarding block becomes a single awardUnlockGroup() call, and generateSchematicChoices (which still owns m_rng and must not change call ordering) now reads group state and builds options through UnlockState. The checksum fold at computeStateChecksum's schematic/unlock section had to move together with the containers it reads; UnlockState:: appendChecksum makes the identical seven appendSchematicMap/ appendStringSet calls in the identical order, so the fold is unaffected. Verified via a temporary golden-checksum test case (added, checked, then removed) that tick1/100/999/1999 checksums for seed 12345 are byte-identical to pre-refactor. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YHcUerKAZKWNvSKJxYKbnG
Description
No description provided
Languages
C++
96%
CMake
2.2%
Python
1.2%
C
0.6%