Commit graph

188 commits

Author SHA1 Message Date
toaster
a016a54e52 Rework how GP Backups are accessed
- Now actually from the relevant GP difficulty's Cupgrid, instead of the top-level Play choice
    - Permits a much cleaner M_StartCup, combining two of the previously four copypasted, slightly modified level startup regions (which could be further combined for sanity's sake, but would take a LITTLE more work right now than I have in me)
- Shows a funny exclamation mark from Sonic Rush on the relevant cup on the grid
- Selected by default when loading the menu, if appropriate
2023-06-25 23:44:39 +01:00
toaster
87c26f0fe9 Skip Bonus Rounds when loading up Live Event Backups
Prevents the exploit Tape discussed from being used for Battle.
Also attempts to recover to Podium if relevant.
2023-06-25 23:44:39 +01:00
toaster
8199437e0d Coming back to the branch, closing menu messages felt annoyingly unresponsive. Let's disable the flashing animation for now and just retain the slideaway. 2023-06-25 23:44:39 +01:00
toaster
d6a3e1446f Improve handling of M_StartMessage strings
The author of this commit ran into an issue while testing previous changes where a Menu Message had MM_NOTHING but a Yes and No string, leading to misleading appearances. This prevents that footgun from happening again.
2023-06-25 23:44:38 +01:00
toaster
3e6a5fda21 Change the rules of when GP Backup occours/is deleted
- Re-saved every time you lose a life, to prevent scumming
- Force-deletion of your backup has changed
    - Don't when saying NO to the GP Backup load prompt
    - Don't when returning to titlescreen under non-DEVELOP
    - DO when starting a new Grand Prix session of any cup
2023-06-25 23:44:38 +01:00
toaster
3391b0e9a5 Flash button prompt before closing Menu Message, for improved conveyance
Needs a sound, we can do that later
2023-06-25 23:44:38 +01:00
toaster
d450faeaaf General Menu Message input cleanup
- M_StopMessage is now in charge of setting the answer to a given prompt.
- Menu Messages can now be dismissed on the title screen, instead of carried into the top-level menu transition.
2023-06-25 23:44:38 +01:00
toaster
45bff5f0d8 Further polish
- Set a restoreMenu for M_GPBackup
- Improved newlines on associated message
2023-06-25 23:44:38 +01:00
toaster
281002f2ee Improve wording for A/B options for GP Backup prompt 2023-06-25 23:44:38 +01:00
toaster
2eef39e079 Fix valid followerskin range on GP Backup load 2023-06-25 23:44:38 +01:00
toaster
e9f9cfd051 Menu Messages: Call the routine after it closes, not the moment you press the button
Slicker, prevents the issue where a transition after pressing accept on a prompt would be instant.
Also guarantees M_StopMessage is called even for MM_NOTHING, even with a custom routine.
2023-06-25 23:44:37 +01:00
toaster
3b272ddb97 M_StringHeight: Handle correct height more cleanly 2023-06-25 23:44:37 +01:00
toaster
12ff436877 Make a first-class feature instead of a passworded secret
- Now called "Grand Prix Backup"
- Filename is now `gpringsav.bkp`
- Since available in standard contexts, do a little extra guarding against unsporting behaviour:
    - In non-DEVELOP builds, delete Grand Prix Backup when returning to the titlescreen/menus.
- "undo your extra work and make it more generic" - Tyron
2023-06-25 23:44:37 +01:00
toaster
e372d348cd Live Event Backup
Associated menu stuff is rough and unpolished, but it's 1am for the author of this commit.
- Activated for this session by either of the following Passwords.
    - `savetheframes`
    - `savetheanimals`
    - The idea is that if Ring Racers were ever ran at a GDQ, runners would swear their alliegance to a particular Metroid routing at the startup stage, because I think it's funny and cute.
- A live event backup is created/overwritten on non-cheated grandprix level change.
- It's wiped on reaching the podium.
- When hitting PLAY on the main menu, if a live event backup exists, make a Menu Message.
    - If you hit A, turn live event backups on for this session, and load the backup.
    - If you hit B/X, delete the backup and proceed to character select.
        - Done this way to avoid cheating a different character to the end of GP.
- Unlike the (maybe a little over-)engineering of ringdata.dat, liveringbak.bkp is streamlined as all hells and has very little recovery for differing file lists.
2023-06-25 23:44:37 +01:00
toaster
3cbbcfd253 M_StringHeight: Guarantee that there will be enough vertical space in a Menu Message for the relevant lines 2023-06-25 23:44:37 +01:00
toaster
f72bd7ff32 Make name of the item "Eggmark"
Cvar was previously "eggmanmonitor" inherited from a completely different implementation of the item
Menu was previously "Eggman Mark", which was good inspiration but too unwieldy
Has been blended together per Gardentop and VC discussion
2023-06-15 21:10:06 +01:00
toaster
76cc902c86 Fix incorrect Yes/No prompt under Addons Menu warnings 2023-06-12 16:39:30 +01:00
toaster
953abf7d26 CL_CONFIRMCONNECT: Attempt to fix the issue with the Menu Message not sliding
The author of this commit *needs* netgame testing, Rean
2023-06-09 19:31:06 +01:00
toaster
6c6306889a M_StartMessage revamp
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++
2023-06-09 19:23:36 +01:00
toaster
874e964225 Revert accidentially committed repeatable debug behaviour for Chao Keys, and guard it behind a single #define 2023-06-09 19:21:31 +01:00
toaster
341db75d34 Wrongwarp: Back to title on closure 2023-06-09 17:40:14 +01:00
toaster
7c91f768d8 Move GDMUSIC_KEYG set to Challenges Menu key addition rather than gamedata, to behave across gameboots 2023-06-09 16:55:00 +01:00
toaster
bf5aa4b5d8 M_GetNextAchievedUnlock: Skip over adding Chao Keys if you've already unlocked everything
I considered restricting it even further to "unlock every minor unlock that can be unlocked by a Chao Key", but decided that if you haven't "completed the game" yet, you should still be periodically reminded of it.
2023-06-09 16:46:58 +01:00
toaster
986ec8025d Polish for Wrongwarp
- Anti-tailgate measure for the SMK titlescreen recreation (prevents slots on the same row from being used immediately one after the other)
- Slightly reduce spinout chance since it felt too frequent
2023-06-08 18:36:44 +01:00
toaster
d7b46b967a Wrongwarp: Randomised SMK character drivealong
Eggman always leads the pack
2023-06-08 00:58:27 +01:00
toaster
04ceb09fd4 Delay wrongwarp music credit until the kayfabe is dropped 2023-06-07 23:05:55 +01:00
toaster
1957f74853 Improve handling for Tournament Mode
- Clearer user-facing messages
- Returns to title screen clearing menus in the normal case
2023-06-07 17:55:26 +01:00
toaster
7bda2f72cf Wrongwarp cheat
`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.)
2023-06-07 17:46:21 +01:00
toaster
c8f74aef2b menubehaviourflags_t: Add MBF_NOLOOPENTRIES
Abstracts one previously hardcoded exception to M_NextOpt/M_PrevOpt
2023-06-07 17:46:21 +01:00
toaster
e162fffecf UC_PASSWORD
Unlockable type that supports entering (case-insensitive) string
2023-06-07 17:46:21 +01:00
toaster
7fd957c929 M_InitExtras: Call with parameter -1 in more circumstances, to prevent an incorrect Extras Menu after Addon load/Challenge unlock. 2023-06-07 17:46:21 +01:00
toaster
98e866c393 M_LevelListFromGametype: Fix copypaste error causing empty Lost & Found to show up when restoring certain post-Time Attack cupgrids 2023-06-07 17:46:20 +01:00
toaster
ee8c0392ef Adjust Extras Tutorial tooltip 2023-06-07 17:46:20 +01:00
toaster
d8e2b4a906 Password entry on Extras menu
- Type in anything you want
- On closing the field, if a cheat sequence is matched *exactly*, activate it!
    - Directly hooked up to a modified form of the previously existing SCRAMBLE interpreter system in m_cheat.c
- The existing cht_Responder call in D_ProcessEvents is gone
    - Done this way because the new input paragadim is not very friendly to unqualified keyboard/controller input, and we still want text
- Plenty of opportunity to add fun future passwords in addition to the currently underbaked Tournament Mode
    - Got a debug M_StartMessage just so you can tell what's up without sound
2023-06-07 17:46:20 +01:00
toaster
823315667b Hold C to use a Chao Key
- 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.
2023-06-07 17:46:20 +01:00
toaster
3aca89603b M_ChallengesInputs: Debugging code for temporarily re-locking existing opened challenges is now more important than resetting the grid, because the grid can be reset via -resetchallengegrid command line param 2023-06-07 17:46:20 +01:00
toaster
533433d41f play-char-select.c: We haven't had problems with devices for a while, so #define away all the device handling messages to reduce the spurious console noise. 2023-06-06 16:48:18 +01:00
toaster
2aa36b5d32 M_CharacterSelectInit: Fix a heaping of bugs
- Fix a softlock caused by commit 8d9b42e4 (!!)
- If your profile's skin was locked, fix a softlock where control was never restored
- If your profile's skin didn't exist, fix an invalid skin id set
- Just straight up flatten out the nested complexity of this function
2023-06-06 16:47:59 +01:00
toaster
82b60cc585 Map types: Make more map ID types consistent as UINT16
- nextmap
- prevmap
- nextmapoverride
- G_GetFirstMapOfGametype
2023-06-02 20:27:38 +01:00
toaster
0c7d66791b Expand datatype for Unlockables, emblems (Medals + nonmedals), and Conditions.
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
2023-05-30 21:08:29 +01:00
toaster
8d9b42e49b Skin name search-assistive hashing
More opportunities for early rejection in table-wide searches, in anticipation of future work.
- Many circumstances independently implemented string name comparisons. Most of these have been converted to use R_SkinAvailable, with one exception.
    - M_CharacterSelectInit already needs to iterate over the characters, so produce the skin hash independently.
2023-05-30 12:21:40 +01:00
toaster
4682f03f91 On reflection, whether a map is visited should be cleared at the same time as its time attack record data, not seperately. 2023-05-30 12:21:39 +01:00
toaster
4c34d04f8a recorddata_t handling adjustments
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).
2023-05-30 12:21:39 +01:00
toaster
04d87bfb6c M_MenuTypingInput: In Virtual Keyboard mode, assign some buttons as shortcuts
- Start: closes the menu
- B/X: backspace
- C: Toggle shift/caps lock
2023-05-21 00:04:45 +01:00
toaster
f24a640e04 Increase reliability of menuKey system
The intersection between processed buttons and raw keyboard data is a messy one and will probably never be perfect, but it is now consistent.
- Never overwrite a valid keyboard menuKey recieved this frame with a -1 if a different type of event is recieved as well.
- Store previous state of dpad_lr and dpad_ud on menucmd struct.
    - Previously, if `a` was bound to Turn Left, it could produce a valid menuKey for one frame, then be considered a leftward input - switching from manual keyboard to Virtual Keyboard.
    - It still only produces a valid menuKey for one frame... but we simply filter out leftward inputs that are older than this frame to keep things (relatively) clean.
2023-05-20 22:37:31 +01:00
toaster
fb578d7da2 Add-ons menu: Add name and tooltip for Search/filter field
Now visible via Virtual Keyboard.
2023-05-20 20:43:41 +01:00
toaster
38ddfeeef8 Make virtual keyboard even stronger
- 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
2023-05-20 20:43:00 +01:00
toaster
d86743f0ba Profile selection music
- `_OCEAN` on first launch without profile set, to avoid skipping between three different tracks in quick succession
- 'FILE' if you create a new profile on first launch OR if you go into Options->Profiles
2023-05-19 23:10:13 +01:00
toaster
f7107e2f66 Rearranged again
All that effort and I didn't notice there was two i's 🥹
2023-05-19 21:42:48 +01:00
toaster
af334f927f Cleanup of the Virtual Keyboard
- 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
2023-05-19 21:21:48 +01:00