Commit graph

368 commits

Author SHA1 Message Date
AJ Martinez
7391094ef2 Minor timeout/delaylimit presentation fixes 2024-03-07 19:55:33 -07:00
James R
bea1cccdde Virtual Keyboard: rewrite keyboard-gamepad switching
- Input handling is done straight in G_MapEventsToControls
- If a keyboard event is received, switch off virtual
  keyboard
  - Removed the input lock while virtual keyboard is
    sliding away
- If a gamepad event is received, and it is a change of at
  least half the full range, switch on virtual keyboard
2024-03-05 17:03:05 -08:00
James R
8c76dee523 Virtual Keyboard: dynamically allocate cache; allow full size of replay title buffer 2024-03-03 06:31:06 -08:00
James R
e05daf0f11 M_GoBack: do not play sound effect on MBF_SOUNDLESS menus 2024-03-03 06:30:54 -08:00
James R
7d01c3046b M_OpenVirtualKeyboard: add optional dummymenu argument
- Virtual Keyboard can switch to a temporary menu while
  typing
  - It will switch back to the previous menu after it's
    closed
- This functionality can be used even if the menu isn't
  already open
  - It will close the menu and return to gameplay when the
    Virtual Keyboard is closed
2024-03-03 06:30:52 -08:00
James R
f270ac5579 Virtual Keyboard: use callback function to get/set cvar string 2024-03-03 06:30:37 -08:00
toaster
e8523b69f0 Sealed Star re-ordering (resolves #606)
- If emerald not yet collected on that cup, pick the first uncollected emerald, then get the cup's CUPCACHE_SPECIAL with that ID to pick the stage
- Already collected emeralds retain their swappage across gamedata saves
- Returns to normal order if you get all 7 OR Special Mode is unlocked (chao key? debug? password in modded games? sky's the limit)
- Pops up a Message from the Stars telling you the gems have been returned to their natural place
- Add-ons will always use their dedicated sealed star, since it's unordered material

If it weren't so last minute I could have a better solution for GP Backups, but right now what I've gone for is it always trusts whatever G_GPCupIntoRoundQueue does AS LONG AS THE COURSE ISN'T THE ONE YOU'RE RELOADING INTO. If it IS, then it checks to see if it's exactly what's been saved, and complains (with the generic error message, unfortunately) if it isn't.
2024-03-03 00:24:31 +00:00
toaster
0093dd13e6 M_Responder: "Quick" event polish
- Quick Retry (Y in modeattacking) now cannot be fired in demo.playback
- Add Quick Spectate (L+R+A+Start) per request
    - Only fires in Playing() + if gametype has spectator
    - Should support local splitscreen players, but can't test it by myself
    - If this input is held down in its full combination by p1, the pause menu itself will not open
    - Does NOT have any functionality if the player is already a spectator, it's just a quick bail
2024-02-29 00:27:09 +00:00
James R
f052228854 Let Profile menu music play in the Tutorial 2024-02-26 21:59:55 -08:00
James R
ae5a20756e Menus/Controls: overhaul multiple bindings input
- Replace the old method of adding each binding one at
  a time
- Hold up to 4 inputs at once, then release to bind those
  inputs to the control
- Changing the bindings overwrites the old bindings,
  instead of adding to them
2024-02-22 02:40:40 -08:00
Oni
ff20f38ffa Merge branch 'in-flight-menus' into 'master'
Course List QOL

See merge request KartKrew/Kart!1867
2024-01-28 23:31:59 +00:00
Sal
3958c15dfe New Credits 2024-01-28 23:31:30 +00:00
toaster
06c049bb7e More consistent lastOn --> itemOn and BGImage setting
Fixes Mari's background image bug
2024-01-27 00:02:16 +00:00
toaster
5e85de05ec QOL: Also support left/right inputs switching the Course from the top-level Time Attack view directly
- Abstracts out M_LevelSelectCupSwitch
- Pre-emptively supports cvars/arrow options on that menu
2024-01-25 22:40:52 +00:00
toaster
af01ae7bc5 Duplicate levellist data for menu restoration
- More consistent and graceful recovery from gametype change
- Fix a potential bug with restoring the menu from Tutorial stages
- Store the calling menu in this struct
    - Permits removing the Match Race restoreMenu hack
2024-01-25 22:40:51 +00:00
Eidolon
02e56a304e Reset all gamekeydown arrays for all devices 2024-01-11 22:04:13 -06:00
toaster
b5c1e89645 Merge branch 'goner-assignment' into 'master'
Assign p1 device during goner/title + unassign all

See merge request KartKrew/Kart!1768
2024-01-05 12:35:20 +00:00
Eidolon
746da46321 Read staff ghosts from pk3 directory 2024-01-02 21:05:43 -06:00
Eidolon
30cd354014 Assign p1 device during goner/title + unassign all
Avoids the controller reassignment message and ensures only one
controller participates in goner setup. Also unassign all devices when
returning to the title screen
2024-01-02 14:38:42 -06:00
James R
9df8dd2bc0 consvar_t: add step_amount field, used by menus 2024-01-01 03:05:17 -08:00
James R
99baf4e8e1 Menus: cycle float values correctly
- Left of MIN: largest value not within MIN/MAX
  - Keep going left to wrap around to MAX
- Right of MAX: smallest value not within MIN/MAX
  - Keep going right to wrap around to MIN
- Always lands on MIN/MAX
- Trailing zeroes removed
  - Keep ".0" at the end (for style)
2024-01-01 03:05:17 -08:00
AJ Martinez
deb9770c80 Use less aggressive menu delay rampup 2023-12-30 22:46:39 -07:00
James R
41155fd81b Menus: press C to reset text box options to default 2023-12-29 19:24:48 -08:00
James R.
d0e1d0a42a Merge branch 'menu-indents-pass-1' into 'master'
Menu indentation for selected options (first pass)

See merge request KartKrew/Kart!1736
2023-12-29 13:40:51 +00:00
Oni
1ca12f2170 Merge branch 'cache-virtual-kb' into 'master'
Menus/Virtual Keyboard: cache cvar string for duration of typing

See merge request KartKrew/Kart!1737
2023-12-29 09:14:11 +00:00
Sally Coolatta
719f4355a2 Randomize menu backgrounds
Can be any unlocked, non-Special Stage, non-boss map with a thumbnail.
2023-12-28 23:39:10 -05:00
James R
0ef1abcf3a Menus/Virtual Keyboard: cache cvar string for duration of typing
This avoids calling cvar callbacks after every key press.
2023-12-28 05:54:01 -08:00
James R
e114bf8f95 Menus: pop out highlighted button on Gamemode menus (except when fading in)
Effective for:

- Gamepad up/down
- Transition (without fade)

Does not affect buttons inside boxes. My reasoning here is
that these show arrows when highlighted anyway, so that
fulfills the extra feedback.
2023-12-27 12:26:30 -08:00
toaster
f955c639e8 Profile setup music changes
- Plays unconditionally, even while mid-game
- ...except on the Goner Setup, per direct request
2023-12-18 20:03:45 +00:00
toaster
c6edfa0de5 Goner Setup Polish
- Imply passage of time when returning from Tutorial to Outro by resetting all the background variables
- Add an additive layer to the Options cogs, so they show up over an extremely dark background
- Metal Sonic will not focus on Tails/Eggman until video is restored
- Don't draw the Miles Electric transparent unless it's completely in its upright position
2023-12-18 17:01:29 +00:00
toaster
b308a81e9d Clean up interactions between Goner Setup and restoreMenu behaviour 2023-12-18 16:30:12 +00:00
toaster
73ff45458e Quit prompt updates for when game hasn't truly started
- More clinical wording
- Guarantee never auto-show when Playing()
2023-12-18 14:10:55 +00:00
toaster
fe669ff281 Goner Setup Background part 2
- Eggman's mouth moves
- Smooth camera movement
- Smooth Miles Electric movement
- Less fragile/instant blinking
2023-12-18 00:46:20 +00:00
toaster
647a9d0a0e Goner setup music: Change behaviour
- Hook into M_PlayMenuJam, to reduce bespoke behaviour
- Use the finalised track string
- Play on the Sound Options menu
Also, use MAIN_Goner as reference for the password field's presence, because I lost like 30 minutes to a related bug
2023-12-17 13:18:35 +00:00
toaster
c82d24b4bc Music starts after Sound Options completed
Currently plays _OCEAN for testing, but will be changed to play _GONER when Journey In Modulating Time's short loop is ready.
Explicitly restricts the basic title screen's music from playing, too.
2023-12-08 13:08:06 +00:00
toaster
11fcb0b9ae Goner Setup: Cook 3 - Add "Outro"
One last guaranteed visit to the setup, to get a sendoff before the game truly begins.
(The "survey program" joke is now themed softlock prevention.)
2023-12-07 23:36:02 +00:00
toaster
e91115a8fa Goner Setup: Cook 2
- More dialogue
- Restrict access to your choices based on your progress through the Goner Setup.
- Save progress through the setup to gamedata
    - Resets to beginning when Challenges is cleared
- Passwords
    - Only permit the password entry in like the first two seconds
        - Preemptively disarms potentially annoying people in stream chats
    - Make wrongwarp also quit the game on exit instead of returning to the title screen
    - Add GDQ cheats
        - `savetheanimals`
        - `savetheframes`
        - Both do practically the same thing, with slightly modified dialogue.
            - Skips all of the normal dialogue.
            - Performing a social experiment on anyone who might stream this game at a charity event. :)
2023-12-03 22:34:06 +00:00
toaster
0f687be7b5 The Goner Setup
The simplest passable version of the first boot experience.
- The minimal set of options you will want are available right in front of you.
    - Quit
    - Password
    - Video Options
    - Sound Options
    - Profile Setup
    - Begin Tutorial
- Will not start any menujams while this is in progress.
2023-11-29 19:37:05 +00:00
AJ Martinez
28405087e5 Y to quick restart attack modes 2023-11-02 16:53:55 -07:00
James R
6c0b042eed Refactor cvar definitions completely, move everything to cvars.cpp
- No need to call CV_RegisterVar
- Cvar definitions live in only one file, easier to locate
- Organized into sections -- netvars, cheats, etc.
- Use builder pattern to initialize cvars
- Still need to extern if you want to read the cvar value
2023-08-25 17:22:40 -07:00
AJ Martinez
3900189199 Auto Spin -> Auto Roulette 2023-08-20 16:26:34 -07:00
AJ Martinez
fbfc75df71 Item box autospin 2023-08-20 05:08:53 -07:00
James R
39f46a0f20 Replace music handling
(This commit does not compile. Sound test and tunes
command code needs to be ported after this.)

This is a big one. Here's the rundown:

The old music system was very direct, much of the time
just a proxy to the real sound API in i_sound.h.

You could change the music on command, but there wasn't
a consistent way to prevent some music from playing over
others. P_RestoreMusic is one example of needing to
address this problem. The jingles system was intended as
another solution. Furthermore, sound test (Stereo) has its
own needs.

I am removing all of that. Music handling in general is
now a very deliberate system, kind of similar to jingles.

In the new system, "tunes" are registered. The tune stores
info such as whether it should loop or fade out. Most of
the configuration is intended to be initialized only ONCE.
Tunes can be mapped to an actual music lump. They can be
remapped at any time too.

Tunes are also configured with a priority number. This
determines which tune is heard, if multiple are supposed
to be playing at a time. You can even tell a tune how long
it should play, so it's unnecessary to track this with
bespoke timers.
2023-08-06 17:31:45 -07:00
toaster
c89048def7 Game End cleanup
- Remove specific gamestate, drawer, etc
- Just add an extra fade straight into G_EndGame
2023-06-25 23:49:19 +01:00
toaster
6b1fadd9d2 Make the Server Connection Ticker use the MenuCMD system
- Permits the use of the existing K_HandleMenuMessage MM_YESNO system, instead of the faked previous implementation
    - Removes the "cl_requestmode" hack
    - The only area of the game that fakes handling Menu Messages is the title screen, now, due to the lack of guarantees for menu inputs.
- *Also* permits Screenshots and video/lossless Recordings to be started/ended on this menu.
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
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
aa4c3ab4a2 K_MenuButtonPressed, K_MenuButtonHeld: Return *actual* booleans, not numerical flag values 2023-06-09 14:31:16 +01:00
toaster
8efd4788e7 enum gdmusic_t
Replaces existing musicflag system, which only had one flag, with a priority system that overrides menu music in general.
Also adds the CHAO KEY FREE DDL WORKING 2023 goofy music for matchesplayed Chao Key generation.
2023-06-07 23:05:19 +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