Commit graph

695 commits

Author SHA1 Message Date
toaster
66b7bf649a Revamp Item Toggles screen again
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)
2025-08-19 15:29:59 +01:00
toaster
ca48b5092b Add Stone Shoe and Toxomister to Item Toggles
Resolves #1611
2025-08-18 21:38:51 +01:00
toaster
1c6ca63933 K_DrawGameControl: Use _FONT enums instead of fragile laundered magic numbers
Fixes the Genesis font breaking all Menu font'd control visuals
2025-08-13 18:05:23 +01:00
VelocitOni
94197b13e1 "These may sometimes be needed for progression"
(Tutorial unlock message drops hint that some may block cups, in-case challenge board is unfortunately configured for the file)
2025-08-13 15:40:36 +01:00
toaster
b97e8a581e Challenges: Add "New Tutorial Data" popup alongside map unlock
Doesn't appear for Playground as it's explicitly not part of Tails' Way
2025-08-13 15:38:52 +01:00
Eidolon
892a6b8620 Merge public master 2025-08-12 16:49:14 -05:00
Eidolon
255570cfca Dynamically allocate skins
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.
2025-08-12 15:33:00 -05:00
VelocitOni
62e14fb2a3 Change some menu wording
"finish a perfect round" specifies above Gear 1, and Intense GP mentions top half instead of "4th" (because this changes in co-op)
2025-08-03 01:22:35 -04:00
Oni VelocitOni
e7917b2f05 Merge branch 'change-public-server-wording' into 'master'
Advertising a Server & Voice Chat Menu Rewording

See merge request kart-krew-dev/ring-racers-internal!2705
2025-07-25 04:52:14 +00:00
VelocitOni
d3e4f91824 More reversals to fix
More reverals fixed, forgot wording on blurb
2025-07-24 23:19:03 -04:00
VelocitOni
29d1dcef2d "Deafen" and "Server Voice Chat" now have new variables
cv_voice_chat -> cv_voice_selfdeafen & cv_voice_servermute -> cv_voice_allowservervoice
2025-07-24 22:54:43 -04:00
VelocitOni
51ac6c250b "Undeafen" (still cv_voice_chat for now), flipped all bools
Flipped all bools on Undeafen since it's worded different
2025-07-24 22:37:51 -04:00
VelocitOni
2c98eefa8d Another bit of renaming, and now is in mirrors into Server Options
Flipped the On/Off switch on Server Voice Chat & Deafen, put the server VC options in Server Options too
2025-07-24 22:02:07 -04:00
VelocitOni
aa0667bac3 Put Server VC options in Server options
Made a copy of Server VC Options and put it in the Server Options menu
2025-07-24 21:52:42 -04:00
VelocitOni
62e19778a0 Renamed "All Voice Chat" to "Undeafen & Unmute"
Even less confusion, All Voice Chat -> Undeafen & Unmute, moved Self-Mute to the top right above it.
2025-07-24 21:12:26 -04:00
VelocitOni
079d00ab15 Voice Chat menu for normies
Changed a bit of wording around to stop in-dev confusion, closer to Discord for player facing variables. Didn't change any of the actual true variable names at all.
2025-07-24 20:10:40 -04:00
VelocitOni
797a776ca4 Server Options "Advertising..." Rewording
"Advertising..." -> "Broadcast..."; "Advertise" -> "Make Public"
2025-07-24 20:09:40 -04:00
VelocitOni
c3482ee779 Base Online Menu "Advertise" Rewording
"Advertise" --> "Public"
2025-07-24 20:08:44 -04:00
toaster
f8aaa43f73 Reset *all* First Boot specific state in M_ClearSecrets, not M_ClearStats
Guarantees wiping gamedata will send you through goner again, since otherwise why are we wiping gonerlevel
Also fixes restarting Goner's audio
2025-07-24 20:03:47 +01:00
toaster
56df65d18c Extra newline for "do you want to play the tutorial again" text 2025-07-24 19:52:02 +01:00
toaster
43fef1a59b Replace the Playground Hack with a specific fix via a case that needed its own function 2025-07-24 19:40:51 +01:00
toaster
8a7df9678e Add photosensitivity warning to Goner
Allows you to turn on reducevfx, screenshake, and screen tilting with one confirm input
Shows up every time game boots just in case you get into Sunbeam and it's too much and need to restart
(also dummied out Kickstart Accel option)
2025-07-24 19:28:27 +01:00
toaster
340b1914d2 Add MBF_CANTRESTORE
Replaces hardcoded exception to restoreMenu
2025-07-24 18:22:25 +01:00
toaster
f0fbd07804 Got better at working in CPP... we don't want a forward_list here, we want a deque! 2025-07-24 13:28:59 +01:00
toaster
585683b978 Fix Proceed password "fake crash"
Didn't always properly reset text, now it does
2025-07-24 13:12:23 +01:00
toaster
1a57416b16 Minor adjustments for Goner Choice
- "session" -> "tutorial"
- make it clear that Addons and Online *will* eventually be unlocked in Tails' Way, just not immediately
- Don't allow looping inputs (pressing right when Eggman's Way is selected and vicea versa)
2025-07-24 12:54:58 +01:00
toaster
c5ab5ec71e Fix minor edge case with error message for Eggman's Way 2025-07-23 19:34:42 +01:00
toaster
6ce6c0d6cf Two minor hacks for Playground that I can't be bothered to do properly, to match desired spec
- Play intro when exiting goner Playground
- Do not allow using menu to skip driving down that hill in goner Playground
The reason these two are hacks is because a map is considered goner Playground if you use -warp at command line or map in console on title screen to get to a Tutorial course... but these are unimportant edge cases IMO
2025-07-23 19:32:07 +01:00
toaster
295e8dd0ce Add Goner Choice
- Selection between Tails' Way (existing Tutorial) and Eggman's Way (Playground)
    - Semi-passable UI
    - Characterful descriptions
- Add "PlaygroundRoute" condition to Challenges
    - Fires if you select Eggman's Way
- 0 Chao Keys unless you go back to Goner for the outro (which Playground skips)
2025-07-23 19:25:52 +01:00
Antonio Martinez
78fb3c0cdd No lives in Relaxed 2025-07-15 16:40:27 -04:00
Antonio Martinez
e4ab3a036e Allow room select even with mddified files 2025-07-02 22:49:46 -04:00
Antonio Martinez
84466de921 Minimum 80% XP in Frantic, remove Frantic poweritem buffs 2025-06-27 01:39:52 -04:00
Ashnal
f5aa2a701b Bail button
Transforms BT_RESPAWN into BT_BAIL
User bindings should migrate along with this
Respawn is now EBRAKE+BAIL
Respawn blocks LOOKBACK
Time Attack quick respawn is now VOTE
2025-06-23 18:07:59 -04:00
Antonio Martinez
4af7ab2555 Lower Duel HUD, global option to disable/enable Duel 2025-06-06 21:32:37 -04:00
Oni VelocitOni
03d9430bb9 Merge branch 'replay-kms' into 'master'
demo improvements (why)

See merge request kart-krew-dev/ring-racers-internal!2598
2025-06-02 21:30:45 +00:00
toaster
d9faf64463 Don't show the "start queue?" message outside of level play 2025-06-01 01:08:55 +01:00
toaster
830cfe76da Round Queue UI on Level Select
- 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
2025-06-01 00:25:20 +01:00
toaster
5bfbfccdae M_LevelSelectInit: Catch potentially invalid skin dereference for Hivolt message, just in case 2025-06-01 00:05:45 +01:00
toaster
71e1179030 M_MenuToLevelPreamble: Seriously clean up the process of starting a course from the menu
A lot of messy, copypasted boilerplate has been bundled together into a single function.
Programmers can now fire up a Match Race, the most basic type of gameplay, from menu code in only four steps (other modes take a little more attention):
- **M_MenuToLevelPreamble(UINT8 - splitscreen players #, boolean - false to extend wipe/true for short wipe)**
- set restoremenu
- D_MapChange(...)
- M_ClearMenus(...)
Includes the following fixes:
- Encore no longer has over-long wipes when started from menu, only standard-length
- "Boss Intro" and Encore start-of-round sounds will always play, even if no Title Card is drawn
- No long wipe when restarting a Time Attack run
- Auto Encore and Auto Gamespeed are no longer accidentially forced if you've manually changed them to Off and Gear 2 before starting netgame
2025-06-01 00:05:45 +01:00
toaster
e4907227fc New simpler rewind code + re-enable in UI
- Built off g_fast_forward to utilise a lot of existing structure
- Only does steps of 5 seconds and therefore isn't precise, but that's better than having to rewatch/fastforward through the entire thing
- No single frame step back or general in-motion rewind preview, but that was all overkill
2025-06-01 00:02:19 +01:00
toaster
09e23e6e18 Rip out all the rewinding code
It was all messy and none of it is called in release builds because it was so crashy in testing
2025-06-01 00:02:19 +01:00
Eidolon
55a8a53077 Turn on and off microphone explicitly
On most devices these days, there is a mandatory microphone indicator
when an input device is being used. Moreover, on macOS and some Linux
distros, the user will be prompted to grant permission to the game for
microphone access. To ensure we're playing nicely with these
expectations, instead of just leaving the device on at all times on
first use, close and reopen the device as sound input is needed.
2025-05-29 15:21:14 -05:00
AJ Martinez
4b00703856 Merge remote-tracking branch 'origin/master' into duel 2025-05-25 15:38:38 -04:00
VelocitOni
212603838d "use pwr.lv" into "use mobiums"
The only other case I can think of, I'd like to leave "PWR" on the master server
2025-05-25 04:48:48 -04:00
Antonio Martinez
3d39ab5225 more Duel 2025-05-24 21:19:33 -04:00
toaster
ecb4ffeeca Add bonus pickups in conditions you couldn't grab Spray Cans before
- 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
2025-05-20 20:27:06 +01:00
Antonio Martinez
0bb8684142 Merge remote-tracking branch 'origin/master' into ta24 2025-05-18 14:30:14 -04:00
Antonio Martinez
cacf470f6f 2.4 TA refinements mkII 2025-05-12 17:18:14 -04:00
AJ Martinez
90c28dc2d9 Spindash button, Strict Fastfall profile option 2025-05-05 20:36:00 -04:00
Eidolon
bd7646346b Use new containers and json 2025-03-16 18:45:11 -05:00