Commit graph

638 commits

Author SHA1 Message Date
toaster
be3c0faf7e More gracefully amend Splits/Attackstart data on ghost load rather than splits load 2025-08-21 18:25:03 +01:00
Oni VelocitOni
bd753a9b59 Merge branch 'more-item-toggles' into 'master'
Add Stone Shoe and Toxomister to Item Toggles

Closes #1611

See merge request kart-krew-dev/ring-racers-internal!2739
2025-08-20 09:30:54 +00:00
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
2f6d7230f0 Dumb post alert: Ease off the horn
If we're bringing the spice we have to bring the whole pepper
2025-08-17 13:06:02 +01:00
toaster
2618232260 Challenge Grid tile border colours
Something subtle and tasteful to break up the solid field of white without turning it into Windows 8 Desktop Dayglo
2025-08-15 21:01:56 +01:00
toaster
cba9292960 Extract K_DrawGameControl calls from M_DrawChallengePreview
Done to fix weird layering issues with Challenge hint text
2025-08-15 17:53:01 +01:00
toaster
fb2224e9b1 Allow pressing <a> again while a follower is on your Profile (or you have a local party and can't make any profile edits from here) to play horn... with goofy bonus text from the only obvious source 2025-08-15 13:20:09 +01:00
toaster
a7f119328e Challenge Preview for SECRET_ALTMUSIC: Consistency
- 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
2025-08-15 13:20:09 +01:00
toaster
d98b88a61f M_DrawChallengeTile: The non-category size of SECRET_MAP will now show a "map face", ala Map Anger/menu Round Queue 2025-08-15 13:20:09 +01:00
toaster
ee76f539e9 M_DrawChallengeTile: Fix brief flickers of invalid side caused by interpolation 2025-08-15 13:20:09 +01:00
toaster
bc75a1702e Extra polish to SECRET_ALTMUSIC on Challenges menu
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
2025-08-15 13:20:08 +01:00
toaster
4fcdb3c5fe Challenges menu QoL: <a> to set Driver and Follower
Also adjusts coordinates of other Challenges UI previews with control inputs to match
2025-08-15 13:20:08 +01:00
toaster
7b6b26fe30 Add skincolor Profile set Qol too 2025-08-15 13:20:08 +01:00
toaster
9074eaf3c8 Add the ability to play Tutorial courses from the Challenges menu
- 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
2025-08-15 13:20:08 +01:00
toaster
7c7bfe6054 Adjust how major and minor challenges affect percieved challenge completion
- 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
2025-08-15 13:20:08 +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
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
Oni VelocitOni
53c0f60a11 Merge branch 'gamedata-pokes' into 'master'
Gamedata pokes

Closes #1509

See merge request kart-krew-dev/ring-racers-internal!2582
2025-06-04 01:12:39 +00: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
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
toaster
b4bb4db12b skinref_t: Don't dereference out-of-range
- 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
2025-05-26 21:31:00 +01: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
toaster
3f9c0685eb Move cache_spraycan on the mapheader_t struct to recorddata_t
Still in that struct, just in a more appropriate container
2025-05-20 20:18:11 +01:00
Antonio Martinez
cacf470f6f 2.4 TA refinements mkII 2025-05-12 17:18:14 -04:00
toaster
a831fc3592 Adjust shade of no-Can dot to avoid matching any 2x2 region on the existing sprite 2025-02-22 23:28:08 +00:00
toaster
5fad786b8f Second pass at representing stacked information
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
2025-02-22 22:32:15 +00:00
toaster
89afe780df Cup Select preview: Draw Spray Can (+ Ancient Shrine) list in Match Race
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
2025-02-20 22:32:22 +00:00
toaster
7e484150bd Cup Select preview: Draw strongly abbreviated Medal list in Time Attack 2025-02-19 15:46:06 +00:00
toaster
43f2dbe786 Level Select block: Draw relevant Medals on map thumbnail
- Medals in Time Attack
- Spray Can & Ancient Shrine in Match Race
2025-02-19 15:46:06 +00:00
Eidolon
cb7f437e60 Merge public master 2025-02-13 15:48:11 -06:00
Eidolon
a4d304a1f5 Update copyright years to 2025 2025-02-13 15:32:26 -06:00
Eidolon
22b20b5877 Add netgame voice chat
Implemented using libopus for the Opus codec, same as is used in Discord.
This adds the following cvars:

- `voice_chat` On/Off, triggers self-deafen state on server via weaponprefs
- `voice_mode` Activity/PTT
- `voice_selfmute` On/Off, triggers self-mute state on server via weaponprefs
- `voice_inputamp` -30 to 30, scales input by value in decibels
- `voice_activationthreshold` -30 to 0, if any peak in a frame is higher, activates voice
- `voice_loopback` On/Off, plays back local transcoded voice
- `voice_proximity` On/Off, enables proximity effects for server
- `voice_distanceattenuation_distance` distance in fracunits to scale voice volume over
- `voice_distanceattenuation_factor` distance in logarithmic factor to scale voice volume by distance to. e.g. 0.5 for "half as loud" at or above max distance
- `voice_stereopanning_factor` at 1.0, player voices are panned to left or right speaker, scaling to no effect at 0.0
- `voice_concurrentattenuation_factor` the logarithmic factor to attenuate player voices with concurrent speakers
- `voice_concurrentattenuation_min` the minimum concurrent speakers before global concurrent speaker attenuation
- `voice_concurrentattenuation_max` the maximum concurrent speakers for full global concurrent speaker attenuation
- `voice_servermute` whether voice chat is enabled on this server. visible from MS via bitflag
- `voicevolume` local volume of all voice playback

A Voice Options menu is added with a subset of these options, and Server Options has server mute.
2024-12-13 17:12:14 -06:00
FreakyMutantMan
af8f7398a0 Fixes skincolors past the 256th displaying incorrectly on character select. 2024-11-19 15:32:10 -08:00
Antonio Martinez
94db0ebc0e Admin Tools descriptige input 2024-09-28 03:03:40 -07:00
Antonio Martinez
555e4eaa4c Final raw button literal fixups?! 2024-09-27 04:44:59 -07:00
Antonio Martinez
f12f69559b Unused warning TWO 2024-09-27 03:30:52 -07:00
Antonio Martinez
92c2f5d5a5 Unused warning 2024-09-27 03:29:07 -07:00
Antonio Martinez
89036e07eb big ol fucking fuck 2024-09-27 03:29:07 -07:00
Antonio Martinez
8e47e37af1 Responsive button display setting, no more standardbuttons 2024-09-27 03:28:40 -07:00
Antonio Martinez
cad7273ff4 Controller type refactor 2024-09-27 03:28:40 -07:00
Antonio Martinez
80912b173c Descriptiveinput in profiles, various 6bt. modes 2024-09-27 03:28:40 -07:00
Antonio Martinez
16727f8df8 Fix spacing on profile charsel control help 2024-09-27 03:28:39 -07:00
Antonio Martinez
81d6ac9f6e FUCK A DRAWBUTTON 2024-09-27 03:28:39 -07:00
Antonio Martinez
7573c7dac9 idk 2024-09-27 03:28:38 -07:00
Antonio Martinez
43960d7a23 Animated keyboard, prelim large buttons 2024-09-27 03:28:38 -07:00
Antonio Martinez
9edeaaf0ba Keyboard label fuckapalooza 2024-09-27 03:28:37 -07:00
Antonio Martinez
af4dc813e2 The text spacing vortex consumes all 2024-09-27 03:28:37 -07:00
Antonio Martinez
7019c77b96 Generic input nightmare fuck 2024-09-27 03:28:37 -07:00