One new parameter on cupheader_t that can only be set in mainwads
If specified hint condition has been achieved, identifies from the actual unlock condition what Tutorial it should surface in a popup.
Funny question mark
There was confusion in testing so I took it as a challenge to improve the menu further.
- Put `Toggle All` on `<c>` instead of an Item slot
- Put `Frantic Mode` on `<r>` since it's in the changelog but not surfaced in any menus right now
- No gaps (RIP free real estate)
- Since we're only using 50% of rollangle steps at 35fps, we can smooth it out under interp conditions like the flipping tile
- Don't grey out the text/stop the button animation for the input prompt, since pressing it again will stop the music, whereas grey text on Drivers/Followers/Colors means no function
- Keep the tile flipping even when not hovered over
If playing a given altmusic unlock...
- If selected, spin the disc
- If not selected, constantly flip the relevant tile on the board
- Either way, flash the relevant pixel in the scroll bar
- Only works in parties of 1
- Currently intentionally disabled for other types of Match Race, as they tend to have too many options and I don't want to risk infinite menu loops
- The Chao Medal in the top right corner will be completely filled if you've unlocked everything, even if that was via skips
- You basically never saw the silver Chao Medal. Major challenges *are* designed to be skipped if you don't want to, only 101% should be gruelling (complementary)
- The Scroll Bar at the top will darken pixels of complete columns ever so slightly even if minor challenges aren't yet achieved, to make it easier to find conditions to go back and fulfil if you're truly hunting for everything
This avoids an issue where the skins array takes up a fixed, but large
amount of memory at runtime. On x86_64 linux, that array is roughly 80
megabytes in memory, most of which is unused when the game is unmodded.
Instead, we treat `skins` as a dynamically resizing array, and it is an
array-of-pointers into separate allocated `skin_t`.
This is based on Lactozilla's skin limit MR for SRB2, but I've rewritten
it because RR has diverged quite a bit.
This was verified to check every access of `skins` by using clangd's
find-all-references function. However, I have only tested plain skins,
not Lua addons, so that could afford some extra checking.
- Only works in Match Race and Online level selects
- Shows in-progress state on Pause and Cup Grid, but no direct influence available on those screens
- Z to queue current highlighted map
- Pending until you press A, then sent to server
- When done online, tries to send one at a time to avoid overloading connection
- C to clear
- Removes one from pending first
- If you're out of pending maps, prompts whether you want to clear server's queue
- Misjudged the boundary conditions as `numskins == MAXSKINS` is valid
- Internal version of public MR !113, credit Alu Folie for bringing attention to the area of error
- If you've gotten every Spray Can, or you're on a custom course...
- Only one of these spawns per map
- Correctly save and load these
- Statistics menu counts base-game bonuses
- If there are gaps in the list, or new Spray Cans are added later, these base-game bonuses are converted into the new Spray Cans
- New graphics required so far:
- SBONA0 to SBONP0 - 16-frame prerendered circling sprite animation
- GOTBON - 8x8 representation of the SBON object
Lots of internal discussion on my last approach, so here's a cleaner alternative
- No more offset with two complex flickering graphics on top of each other
- Instead, "less common" secondary info is represented by a coloured dot overlaid on the primary icon
- Red for SPB Attack, Turquoise for Mystic Melody
- Only show Spray Can/Mystic Melody for Race-compatible courses
- Show courses where you haven't picked up a Spray Can with a dot
Expansion of previously implemented UI for Time Attack, but for showing gotten cans/shrines only.
Also:
- Halved flicker rate for SPB attack medals
- Made invalid cups not display Lost & Found's associated medals OR cans/shrines