Immense 25-file diff, so spun off into its own branch.
- Improved appearance
- Not just a big block of text on a blue background
- Well, OK, the main part is, but some stuff has been spun out into its own fields
- Title text
- Text and button prompt for Yes/No or OK
- Slides with pow on and off the screen
- Disabled MM_EVENTHANDLER, which has always been dog but got considerably worse after newmenus to the point nothing's using it anymore
- Required in order to reduce the reliance on FUNCPTRCAST, which prevents Eidolon from compiling some stuff because it's not valid C++
`banana` was the cheat for the previous entry in the series.
Visuals are incomplete but I have to go out in a little bit and the bulk of it is done
(The Tournament mode cheat's password is "placeholder" for now.)
- Takes a second and a half.
- No accidential usage of your hard-earned Chao Keys.
- Does a full clockwise rotation around the unlocked spot, so there's an intuitive understanding of how long you have to bail out.
Made sure there is more than enough headroom for our current purposes.
It should be easy to double again if necessary now that the datatypes have been increased... but that would be obscene at this point
- 1024 Unlockables and 1024 Conditions (these were always tied together in slots)
- 2048 emblems (Medals + nonmedals). If we ship with ~250 maps this permits 8 Medals per map - which is higher than we intend right now but could easily fill out in patches
- New Rank icons
- Use Minimap-sized Emerald instead of Battle HUD
- Shows associated character you last updated (or matched) the position with
- Also removes the temporary printout display on G_LoadGameData.
Preperatory work for the next feature on my agenda.
- No longer independently allocated.
- This was a byproduct of the previous NUMMAPS-based implementation. It's just cleaner to have it live directly on the mapheader_t, no caveats about it.
- Now contains mapvisited bitflag array.
- Now all to-gamedata properties on a mapheader's struct are grouped together.
- I was of two minds about it, but decided that this would have cleaner guarantees for compartmentalisation, saving, and loading.
- They can still be wiped independently (G_ClearRecords for time/lap and M_ClearSecrets for mapvisited).
- Show a textbox (with highlighted border) so the console font is more likely to be legible.
- Increases the width of the virtual keys to match this.
- Show menu entry name and tooltip on faded view (if they exist), for additional context for what you're writing
- Make the text entry and the virtual keys slide seperately
In addition, don't show the pause menu PAUSED in modeattacking/netgames
This text is now snapto-affected, since we can't (or at least shouldn't) summon the widescreen border in regular pause instances.
- Variable width key support
- Rearrangement of keys to take advantage of this
- Uses thin strings
- Or arrow sigils for backspace/shift
- Shift and caps lock have been visually combined to match other virtual keyboards
- Press shift once to enable shift, press again to disable shift and enable caps lock
- Indicator light on shift to show capslock state
- k_hud.c: Add K_DrawSticker function (was previously named M_DrawSticker)
- Seperated the confirm handling into the menu ticker (fixes the confirm delay being framerate dependent)
- Updated to use the button graphics
Also includes secret support for widescreen.
I was planning to put this on tab rankings, which doesn't have borders.
Pause menu does, but it would be a waste to strip it back out again.
Each map now just has a countdown for when they'll reappear (stored in mapheader), which gets decremented each time a new map is played. This means it's now compatible across gametype switches, is a lot less complex, and is easy to retrieve the value for a specific map without needing to iterate constantly.
Lots of the old unused code surrounding this function was also removed. Lastly, added a PARANOIA check for callAgainSoon being mishandled.
- Introduce comments to make flow understandable.
- Abstract the number of seconds in the fade out (previously handled across multiple places) into SOUNDTEST_FADEOUTSECONDS.
- Make all next/conclude song cases for autosequence and non-looping track handled in one place.
- Fixes the case where a non-looping track could stop the Sound Test even in autosequence mode.
- Shown on the menu
- soundtest.autosequence
- Plays all songs in sequence, skipping over the soundtest entry.
- Plays each looping song twice (and fades out if it's the last one in the musicdef's tracks)
- Plays non-looping songs once with no fade ever
- Disabled when S_SoundTestStop called
- Songs that end outside of autosequence will now stop the visible Playing.
- Use LSTitleHighString at the top of the menu for the music's title/Sound Test
- Only show Track for relevant entries
- Show cv_soundtest.value in hex for that Classic Sonic soundtest flavour
Access to soundvolume and musicvolume through the Stereo Mode menu
- Draws a knob and volume bar (with loudness warning)
- Changes which cvar is associated with it depending on selected song/lack of
- If on any regular song, use digital music volume
- If on soundtest, use sound volume
- unless on entry 0 aka N/A, where no volume is visible at all