Remake of the TS mission selector screen - #2386
Open
FS-21 wants to merge 7 commits into
Open
Conversation
…CX/SHP assets, custom palettes, voiceovers, typewriter briefings and video cutscenes
…c updates - Adopt WWMouseClass reactivation and native cursor pattern from Dropship Loadout - Rename target graphics tags to TargetFlyInAnim/TargetFlyInAnimPCX and TargetMarkerAnim/TargetMarkerAnimPCX, freeing TargetFlyIn strictly for audio - Dynamically split TargetMarkerAnim frames into idle and hover halves based on file frame count - Remove obsolete battlemd.ini and missionmd.ini reads from mission selection - Prevent double free in pOverlayPalette and clean up custom animation palettes - Update User-Interface documentation with target animation details and sounds
…during intro - Sync target fly-in timing to 50ms per frame matching OpenTS Rate=3 @ 60Hz - Suppress OS and in-game cursors completely during intro presentation - Ensure definitive cursor only appears once all targets have settled on map - Follow Phobos code styleguide for single-line braceless blocks and spacing
- Class members and fields renamed from camelCase to PascalCase
- Enforce anonymous enum for return addresses in BinkMovie_CheckInput_MapSelection
- Replace auto on primitive types and pointers with explicit types
- Add space between empty curly braces { }
- Consistent bracing across if-else branches and no nested braceless blocks
- Mandatory blank lines separating return statements, variable declarations and code blocks
- Enforce tab indentation and Allman brace formatting
Contributor
Author
Mission.selector.demo.01.mp4 |
|
Nightly build for this pull request:
This comment is automatic and is meant to allow guests to get latest nightly builds for this pull request without registering. It is updated on every successful build. |
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.
mapselmd.ini.[Sides]and faction sections map the player's side/house to campaign stages.MapVQspecifies the introductory cutscene movie or video background.Mapspecifies an optional static background SHP image.MapPCXspecifies an optional static background PCX image (taking precedence overMap).Palettespecifies the palette used for UI rendering and animations (defaults tomapsel.pal).OverlayPalettespecifies the palette used for territory overlay rendering (defaults tomsovrly.pal).Overlaysspecifies a comma-separated list of territory overlay SHP files that sweep into the map after the intro video.OverlaysPCXspecifies a comma-separated list of PCX overlay files (taking precedence overOverlays).Targetsdefines the count and (X,Y) coordinates of animated mission target crosshairs on the map.TargetFlyInAnimspecifies the target zoom-in SHP animation (defaults toTARGET1.SHP).TargetFlyInAnimPCXspecifies a base PCX filename for the target zoom-in animation (declaringTARGET1.PCXorTARGET1 0000.PCXautomatically loads the sequence of frame filesTARGET1 0000.PCX,TARGET1 0001.PCX, etc., taking precedence overTargetFlyInAnim).TargetMarkerAnimspecifies the target crosshair marker SHP animation (defaults toTARGET2.SHP). The first half of the file's total frames are looped while the target is in idle state, and the second half of the frames are looped while the cursor hovers over the corresponding region.TargetMarkerAnimPCXspecifies a base PCX filename for the target crosshair marker animation (declaringTARGET2.PCXorTARGET2 0000.PCXautomatically loads the sequence of frame filesTARGET2 0000.PCX,TARGET2 0001.PCX, etc., taking precedence overTargetMarkerAnim). Just like the SHP version, the first half of frames are looped in idle and the second half in hover.Anim<N>defines stage-specific decorative SHP animations (<file.shp>,<x>,<y>,<delay>[,<palette.pal>]) on the map interface (logos, radar sweeps, spinning globes, beacons). An optional custom palette filename can be provided (defaulting toPalette).[Anims]defines global SHP animations shared across all stages (<index>=<file.shp>,<x>,<y>,<delay>[,<palette.pal>]). An optional custom palette filename can be provided (defaulting toPalette).[Anims<SideIndex>]/[Anims<SideName>]defines side-specific global SHP animations (which can also be referenced viaAnims=under[SOMESIDE], or declared directly asAnim<N>inside[SOMESIDE]).[AnimsPCX]defines global multi-frame PCX animations shared across all stages (<index>=<base.pcx>,<x>,<y>,<delay>).[Anims<SideIndex>PCX]/[Anims<SideName>PCX]defines side-specific global multi-frame PCX animations (which can also be referenced viaAnimsPCX=under[SOMESIDE], or declared directly asAnim<N>PCXinside[SOMESIDE]).ClickMapspecifies an 8-bit indexed 256-color PCX mask image. Color indices0and255represent non-clickable background areas (oceans, borders, or transparent zones), while palette color indices1through254represent clickable territory zones (referenced by<mask's color index>=).<mask's color index>=<StageName>binds a palette color index from theClickMapPCX to a mission choice section (e.g.3=NODB03and4=NODA03). When the player hovers over pixels painted with palette color index3, the game highlights and displays the briefing for[NODB03], and launches its scenario upon clicking. Up to 254 unique clickable territory zones per screen are supported.Soundsspecifies an external sound configuration section (e.g.Sounds=GDISFXorSounds=NODSFX). This allows centralizing and sharing a common sound palette across multiple stages or sides instead of repeating audio tags in every stage section. Individual stages can still override any sound locally.[Sounds]defines optional global sound effects shared across all sides.[Sounds<SideIndex>]/[Sounds<SideName>]defines optional side-specific global sound effects (e.g.[Sounds0]or[SoundsGDI]).<sound_name_or_file>[,<volume_percent>](e.g.BESTBOX.WAV,75orEFFICIEN.WAV,40). Volume defaults to 100% if omitted.soundmd.inior a direct WAV filename (from disk or.MIXarchives). Specifying an explicit.wavextension prioritizes searching for the standalone audio file, whereas omitting the extension prioritizes looking up the sound ID insoundmd.ini(falling back to<name>.wavif not found).VoiceOverdefines the spoken audio brief played when hovering over a mission choice (supports WAV filename or sound ID, with optional volume).EnterRegiondefines the sound played when entering/hovering over a territory.ClickRegiondefines the sound played when confirming a mission selection.Overlaydefines the sound played during the territory overlay sweep.TargetFlyIndefines the sound played during target crosshair zoom-in animation.ExitRegiondefines the sound played when cursor exits a territory.MouseOnMapSound/MouseOffMapSounddefines sounds played when cursor enters or leaves the map window.Themespecifies an optional soundtrack theme played during map selection (silent by default unless specified).TypeSoundspecifies the typing sound effect fromsoundmd.ini(e.g.TypeSound=TextBleeporTypeSound=noneto disable; defaults toTextBleep).TextColorspecifies the text color (R,G,B) for the mission briefing (defaults to the active side'sMessageTextColorinrulesmd.ini, or the country'sColorscheme, falling back to white).TextRectspecifies an optional custom bounding rectangle (<x>,<y>,<width>,<height>) for the mission briefing text, relative to the map window (defaults to92,322,332,78matching Tiberian Sun's HUD plate).Descriptionspecifies the CSF string key or text for the mission briefing, displayed in the metallic briefing panel with automatic multi-line word wrapping and typewriter animation.In
mapselmd.ini: