Commit graph

21306 commits

Author SHA1 Message Date
toaster
84a98475ff Command_ExitGame_f: Return to title if restoreMenu is NULL 2023-02-04 17:07:24 +00:00
toaster
59f9609160 G_AddGhost, G_LoadRecordGhosts: Re-add support for loading staff ghosts.
- UINT8 *buffer for AddGhost must now be allocated and filled externally.
- Introduce P_TryAddExternalGhost helper function for existing external ghosts.
- Call vRes_Free(curmapvirt) later, and NULL to make incorrect usage immediately obvious.
2023-02-04 15:46:15 +00:00
toaster
3e0ba74003 P_PlaybackSetViews: Support C-button reset to 1p view 2023-02-04 11:07:29 +00:00
toaster
6dd32deecb M_HandleStaffReplay, M_DrawTimeAttack: Re-support selecting staff replays from the menu 2023-02-04 11:06:57 +00:00
toaster
a2fadd2ff4 M_ChangeCvar: Split out core of function into M_ChangeCvarDirect, to prevent future code duplication 2023-02-04 11:06:28 +00:00
toaster
3ca1c554c4 M_HandleMenuInput: Pass a choice of 2 to IT_CVAR/IT_ARROWS routines
- Permits IT_ARROWS routines to distinguish between a rightward input and an A-button input.
- Only M_ChangeCvar needed to change to accomodate this - every other example of IT_ARROWS already acommodates this
2023-02-04 10:44:47 +00:00
toaster
96297aad1c Title demos: Add support for game loading vRes staff ghosts as title demos 2023-02-03 18:23:59 +00:00
toaster
29ddf06f1e G_DoPlayDemo: Add support for replays stored inside map vres 2023-02-03 18:18:43 +00:00
toaster
1efc5883e0 G_DoPlayDemo: Remove memory leak in pdemoname 2023-02-03 18:16:18 +00:00
toaster
f378dfe3f6 ACS Environment::loadModule: Free vres after generation
Discovered (temporary) memory leak while writing the following commit
2023-02-03 13:53:26 +00:00
toaster
99bf1c10e8 staffbrief_t
- Demos are VERY large and should not be cached for every map in the game all at once.
- Instead, store a small amount of data related to staff ghosts for later reference.
    - best time (for use in Medals)
    - best lap (maybe use for Medals too)
    - player name (for use in Time Attack menu)
2023-02-03 00:55:34 +00:00
Oni
79796b00f5 Merge branch 'sprite-brightmaps' into 'master'
Rudimentary sprite brightmap support

See merge request KartKrew/Kart!801
2023-02-02 05:49:31 +00:00
Oni
4cc8e46cf8 Merge branch 'minigen-verbose' into 'master'
Verbose minigen - "RR_GREENHILLS-MINIMAP.png"

See merge request KartKrew/Kart!903
2023-02-02 05:25:30 +00:00
Oni
b3a299e7e6 Merge branch 'menu-flow-polish' into 'master'
Menu flow polish

See merge request KartKrew/Kart!907
2023-02-02 03:52:37 +00:00
toaster
61020a2621 M_HandleMenuMessage
Do not permit a menu message to be interacted with if it has not completely risen.
Fixes the occasional skip if you hold the button a fraction of a frame too long, which most scarily could happen on the data erase confirmation...
2023-02-01 23:34:23 +00:00
toaster
fd575deb10 D_ClearState, D_StartTItle: Fix music restarting if shared between connection screen/playsim and menu 2023-02-01 23:26:33 +00:00
toaster
69484cd55a Failed net connection: Catch another exit to title, and replace with menu restore. 2023-02-01 23:19:50 +00:00
toaster
5b0b118ee5 M_SpecificMenuRestore: Fix a bug where setup_numplayers was always being set to 1, instead of only when "skipping" character select via netgame connection 2023-02-01 23:16:48 +00:00
toaster
03d422560d menu_t, M_PlayMenuJam: const char *music parameter
If Playing(), does nothing.
- If NULL, cycle between Cascade Cave as is traditional.
- If ".", stop music. (will one day be used for sound test)
- Any other case, call S_ChangeMusicInternal on the string directly

Notable menu sets:
- All Extra menus, excepting the Replay Hut, use "EXTRAS"
- Replay Hut uses "REPLAY"
- All online menus use "NETMD2".
    - I know we wanted to do something with switching between "NETMDE" and "NETMD2". I would prefer a more consistent API for transferring song position across between tracks be implemented before implementing this.
    - Known bug: Music restarts when exiting from failed connection screen
    - Known bug: Music goes back to Cascade Cave when selecting "GO" for server creation
        - Wontfix as we want that button to go directly to the voting screen, which we can do in a voting revamp branch
- Data Erase, Profile Erase: "SHWDN2"
    - Not in the spec but I think it's both funny and a valuable tell for the most "dangerous" menu to play with.
    - Also shifts the background to SKINCOLOR_BLACK
2023-02-01 23:15:51 +00:00
toaster
f46fbf0418 Remove MessageDef
This was a dummy conditional which was necessary in the old menu system; this is no longer the case as of newmenus.
2023-02-01 22:39:35 +00:00
toaster
f630bbb1cf Challenges menu: More complicated music behaviour
- Pure silence when challenges are being unlocked
- Begin playing the menujam as control returns to the player
2023-02-01 22:14:26 +00:00
toaster
57b22f32d5 M_PlayMenuJam
Pre-emptive work for more complicated menu music behaviour, permitting consistent implementation of the cycling music.
2023-02-01 22:12:41 +00:00
toaster
d31e5ac76f M_HandleReplayHutList: Repair handling for selecting replays
It seems to be an interaction with running transitions, which I was trying to avoid for this menu anyways.
2023-01-31 20:09:36 +00:00
toaster
0305249a36 PLAY_MP_OptSelectDef: Adjust the unwinding boxes
- Make them open in a snappier fashion, not a leisurely step
- Fix the open box missing an entire row of pixels at the top
2023-01-31 15:54:19 +00:00
toaster
39dadf1b1e PLAY_MP_OptSelectDef: Integrate M_MPOptSelectInit into M_SpecificMenuRestore 2023-01-31 15:52:46 +00:00
toaster
7b483f9c75 PLAY_RaceGamemodesMenu: Slight rephrase of the Grand Prix menu tooltip 2023-01-31 14:39:51 +00:00
toaster
18faf5d54a HU_DrawDemoInfo: do not draw best lap time when irrelevant 2023-01-31 14:35:57 +00:00
toaster
87ee91638e D_ClearState, G_EndGame, G_GameEndTicker: Move netgame-specific server looping out of the general state-clearing function, for sanity's sake. 2023-01-31 14:09:21 +00:00
toaster
2d5d5343b1 M_EndModeAttackRun bugfixes
- Correctly restore menu state after failed record attack run
- Making things easier for future work - use demo.title as signifier to go back to title screen
2023-01-31 14:00:21 +00:00
toaster
defa4511a8 G_EndGame: Do not open menu if D_ClearState runs netgame level loop behaviour 2023-01-31 13:57:53 +00:00
toaster
418cc29adc M_FirstPickProfile, M_StartControlPanel: Support restoremenu after first profile selection 2023-01-31 13:12:31 +00:00
toaster
3ba8ccfbfb M_SpecificMenuRestore: Only M_SetupRaceMenu in GT_RACE 2023-01-31 12:54:34 +00:00
toaster
0947ed5eec M_SpecificMenuRestore: Move all conditional sets of restoreMenu inside this function
In the case of returning from the Challenges grid, restoreMenu would not actually match the condition - preventing the relevant code from running.
2023-01-31 12:54:11 +00:00
toaster
8d6be5e662 M_StartControlPanel: Fix incorrect interaction with NULL restoreMenu and Challenges menu 2023-01-30 00:35:52 +00:00
toaster
749de36734 M_InterruptMenuWithChallenges: Fix a rendering error where an irrelevant unlockable could be highlighted during the fade-in before jumping into position 2023-01-29 23:59:53 +00:00
toaster
20e9b2f5e8 Restore menu state after playsim
- restoreMenu, M_SpecificMenuRestore
    - From any Cup Select, Level Select, or Time Attack context (including non-net replay playback), return to the relevant "core menu"
    - From any server OR server connection failure, return to the Online EGGA CHANNEL top-level menu
    - From netreplay, head to replay hut without incorrect gamestate/fade cope
    - Interruption for Challenges unlock sequence now happens on all menu returns, not just post-titlescreen
- M_StartControlPanel
    - Integrate with above
    - Handle menu re-initialisation properly under more contexts
- D_ClearState
    - Split out from D_StartTitle
    - Can be used alongside M_StartControlPanel to restore menu state from any play session in a way just as reliable as D_StartTitle was
2023-01-29 23:53:21 +00:00
toaster
154d9c5f18 Replay Hut: Remove all snapto flags so it works with the border for other aspect ratios 2023-01-29 01:10:54 +00:00
toaster
4530ccf2aa Remove Playback mini-menu shortcut indicators
These are completely incompatible with newmenus because we can't assume anyone would have these buttons unbound. If we add anything like them later, they'll be user-bindable - but the point of good menu design is to not require shortcut keys.
2023-01-29 00:36:38 +00:00
toaster
c55849006d Repair playback mini-menu
- Fix starting the playback mini-menu
- Fix playback mini-menu input not being natively horizontal
- Fix playback mini-menu having been written before r_splitscreen refactor
- Move heinous modifying-menu-data-in-the-drawer behaviour to an actual dedicated ticker
2023-01-29 00:29:46 +00:00
toaster
05301d0825 Repair demos that finish without crashing inexplicably returning to titlescreen after their completion
It's because of cv_cheats' default value in DEVELOP builds...
2023-01-28 23:18:50 +00:00
toaster
7ea596daae M_EndModeAttackRun: Update time attack menu on exit 2023-01-28 22:33:11 +00:00
toaster
c8b8eba6e6 Partial demo conclusion crash fix of invalid player/mo dereference
Still crashes, but now at an address I can't use gdb on...
2023-01-28 22:22:08 +00:00
toaster
594acca383 M_ReplayTimeAttack: Repair non-netreplay demo playback
TODO: Consistently crashes on successful replay finish
2023-01-28 22:20:43 +00:00
toaster
6b85a755eb M_PrepeareTimeAttack: Match numlap count check behaviour for presence of best lap support 2023-01-28 21:56:17 +00:00
toaster
f2a4392475 Time Attack menu: Reimplement Guest replay saving and deletion.
Implemented with less indirection/repetition than SRB2/Kart v1.
2023-01-28 21:52:34 +00:00
toaster
493b54d0f2 M_PrepareTimeAttack
Initialises Time Attack menu
- Check for replay file's existence before showing related options
    - Parity with pre-newmenus behaviour
    - Replay/guest-save functionality not yet (re)implemented
- Handles mutli-gametype timeattack level select listings more thoroughly
2023-01-28 19:09:22 +00:00
toaster
e3eeb229d8 M_MinimapGenerate: Include lumpname in minigen output filename
Corrects an oversight I thought of over the past few days.
- Permits a mapper doing minimap maintenance on multiple maps in one uninterrupted game session.
- Standard Filename format example: RR_GREENHILLS-MINIMAP.png
- Multiplier filename format example: RR_GREENHILLS-MINIMAP-10.png
2023-01-28 00:18:38 +00:00
toaster
b689e0adf2 Merge branch 'scripts-first' into 'master'
Scripts.pk3 first

See merge request KartKrew/Kart!901
2023-01-27 22:48:03 +00:00
toaster
9e1a2a5201 lib_freeslot: Init dehacked state so SOC initialised later won't nuke freeslots generated here 2023-01-27 19:06:24 +00:00
toaster
ab77b88a24 d_main.c: Load scripts.pk3 before all other files, to permit object definitions to be used in weather and terrain 2023-01-27 18:52:17 +00:00