Repository navigation
wc3: Support RoC 1.00 CD data, retail campaign selector, and UI sounds - #576
Merged
Merged
Conversation
A RoC CD install ships only the 1.00 War3.mpq, whose CampaignStrings.txt predates the Background/CampaignList schema, so the campaign screen loaded no backdrop and stayed black. Parse that legacy layout (TitleN headers, name-only cinematics with [Label] headers, <Key>Backdrop skin fallback) and warn in the console whenever a fallback or a blank backdrop happens. Rebuild the campaign and mission selectors the way patched clients do: runtime rows of arrow/camera buttons in fixed 0.0315625 slots, a blank after each campaign and after an Introduction, centred in a ten-slot box and wheel-scrolled when longer. The static 1.00 FDF rows stay hidden. Show the MainMenuLogo, and restore the selector backdrop on Back. Add interface sounds through the imported PlaySoundByName path: register UISounds.slk rows as named kits when no SoundEntries.dbc exists, play GlueScreenClick on glue clicks, pick kit file variants per play, and fire glue panel SND events by giving UI sprites per-instance event state and non-positional playback. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
corepunch
force-pushed
the
wc3-roc-cd-campaign-ui
branch
from
October 4, 2026 09:12
1ddd8c4 to
9d917e4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A player pointing OpenWarcraft3 at a Reign of Chaos CD folder (Manjaro) saw a black campaign screen. The 1.00
War3.mpqships an olderUI\CampaignStrings.txtwith noBackgroundkey, so no backdrop model was ever loaded. Fixing that exposed several layout and sound gaps against retail, which this PR also closes.Legacy 1.00 campaign data
CampaignStrings.txtlayout:TitleNmission headers, name-onlyInCinematic/OpCinematic/EdCinematic(movies<Key>In/Op/Ed, headers from[Label]), and a<Key>Backdropskin fallback.Campaign / mission selector (ROC and TFT)
CampaignListBoxscrollbar height).uiScreen_t.scrollhook.TutorialFrame…,Mission0Frame…) are always hidden. They previously overlapped the generated list.MainMenuLogosprite anchored top-right, as the main menu and Warsmash do.Birthcamera move.Interface sounds
UISounds.slkrows as named kits when there is noSoundEntries.dbc, decoded with aslkField_tschema like the game module's SLKs. The menu playsGlueScreenClickon glue clicks through the importedPlaySoundByName.freqweights or uniform) and load it through the path-keyedsfx_ttable.SNDevents (Left/RightGlueScreenPopDown/Up) now fire.RDF_UI_SPRITEflag, get per-instance event state, and play non-positionally (a NULL origin passed toPlaySoundAt).Testing
openwarcraft3-tests: 46376/46376 in both ROC and TFT (rebased on main, after exe version reporting #575).test-menu: 1220/1220, and 1227/1227 compiled with-DBZ_FFMPEG. Includes new selector-row, scrolling and legacy-data tests.test-sound: 1698/1698, with a new UISounds kit and variant test.test-renderer-model6030/6030,test-mdx-ui97/97,test-mpq-compression46/46.War3.mpq, plus a TFT install.Reviewer notes
DefaultOpen, sowc3_campaign_visibility unlockedshows nothing until progress exists. The defaultallshows every campaign.movies/would report "Movie not found". Not addressed here.🤖 Generated with Claude Code