Commit graph

550 commits

Author SHA1 Message Date
toaster
527492610a Fix inttime 0
Important testing apparatus while working on the previous commit
2024-01-07 22:02:09 +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
Sally Coolatta
5eaf2613c6 Show rank on intermission 2023-12-13 01:28:22 -05:00
James R
764a692a5e P_IsLocalPlayer, P_IsMachineLocalPlayer, P_IsDisplayPlayer: let player pointer be const 2023-11-25 04:51:13 -08:00
toaster
c752990720 Y_Ticker, roundqueue contexts: Fix for leaking existence of rank-restricted entries
The player pin jumping "clack" sound was improperly guarded from happening when reaching the end of a GP without accomplishing a Sealed Star.
2023-11-19 18:48:49 +00:00
toaster
b09a9b40c4 Account for Hidden Palace-like replacement levels in the round queue and ranking systems
- When a nextmapoverride is in play, do not insert the just-played map into the GP Rank
- Put all the behaviour that determines which Round icon to show in exactly one places

Also, fix a bug where it would show the skin realname for a spectating player's tally instead of the ROUND text.
2023-11-19 18:01:02 +00:00
toaster
b4ec390f16 Forgot to commit, I hate gamemap one-indexing 2023-11-18 12:37:48 +00:00
toaster
55c6602473 Review: Don't award map visitation when the tutorial challenge is queued up, either 2023-11-18 12:15:36 +00:00
toaster
0762b93ef2 Tutorial skipping challenge - first pass
- Go to a MainCfg-specified map on its guessed gametype
    - `TutorialChallengeMap = RR_ZonedCity`
- Some unique settings
    - K_CanChangeRules() == false
    - If GTR_CIRCUIT, make it Hard Speed
    - If GTR_BUMPERS, die in one hit
    - If GTR_BOTS, make them all difficulty 13 of the default bot skin
    - No Medals or Spray Cans during the Tutorial Challenge
- Complete the stage in 1st place or don't bother at all
- Has the "Give up" menu option available, but no "Try Again"
- Condition for successfully completing the Tutorial Skip
    - `Condition1 = TutorialSkip`

Related bugfixes:
- Correctly wipe skipstats when returning to the Title/menus
- Typing of `ultimatemode` (hey this isn't accessible by anything right now I wonder)
2023-11-16 21:44:52 +00:00
toaster
388b14e956 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into will-it-blend
# Conflicts:
#	src/k_podium.c
2023-10-29 12:36:30 +00:00
Sal
cecd81b4aa Podium rank screen polished 2023-10-29 06:04:22 +00:00
toaster
c5f7f93e20 Spectator intermission: Only use boss name to describe the Round if the cool boss intro occoured at level load. 2023-10-26 20:21:33 +01:00
toaster
7aa40f1a0a Y_RoundQueueDrawer: Support the star bonus round dot for queued gametypes that don't have GTR_PRISONS 2023-10-25 23:41:08 +01:00
toaster
e060e9dadc More consistent handling of special event round icons
- Gametypes have "GPpic" and "GPpicMini" parameters
- These are shown in contexts where a Round Number would be shown in GP, but an eventmode is under way.
- Instead of having different rules to show up on the pause menu, titlecard, and tally/intermission...
    - Pause Menu Roundqueue, Tally, and Intermission have all been aligned to the same rules.
    - As long as the titlecard is standard, it will show the GP Pic per those rules. (GTR_SPECIALSTART and GTR_BOSS still have their unique behaviour here)
2023-10-25 20:34:40 +01:00
Oni
a221cb467e Merge branch 'master-mode-all-access' into 'master'
Rank 1 Master always enters Sealed Star

See merge request KartKrew/Kart!1582
2023-10-24 03:25:55 +00:00
AJ Martinez
e2e022dd6a Rank 1 Master always enters Sealed Star 2023-10-22 16:49:31 -07:00
AJ Martinez
15338c4e32 Packet loss indicator 2023-10-20 20:33:37 -07:00
toaster
59da86e88e Intermission button prompt: Fix slide-out for non-roundqueue contexts 2023-09-21 16:12:21 +01:00
Sal
0675a4e527 Tally screen 2023-09-09 05:27:55 +00:00
Sally Coolatta
867253540c Sonic 3-style intermission coloring
Not just tan, but blue & a tiny bit of green!
2023-09-07 16:19:37 -04:00
toaster
d4c6c75858 Y_DrawIntermissionButton
- The (A) that appears on the intermission to permit you to skip it now has its own drawer function.
- This drawer (interpolatedly) slides it in and out depending on the two times passed to it.
- Now slides in at the first half-second of intermission, preventing mashing through.
2023-09-02 00:26:29 +01:00
Eidolon
6f580606cd hwr2: Remove pass infrastructure
It's not worth trying to force the engine to conform to deferred
drawing.
2023-09-01 15:30:04 -05:00
James R
4f60d046ba V_DrawTitleCardString, V_TitleCardStringWidth: add 4P font support 2023-08-26 21:39:18 +01:00
James R
99d9d4452b Offline: intermission doesn't move automatically, skip with A button
- Press A button the first time to do the card flip.
- Press A button a second time to end the intermission.
  - Will not end literally immediately, in order to let
    tally sounds finish and GP progression bar animate.
2023-08-20 15:40:55 -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
1b5d59746f Adjustments/fixes to Duel Intermission view
- Always show, even in online
- Add Egga Channel/CPU icon if not a local player-controlled character
    - This fixes an infinite loop crash that could previously affect 1v1s VS bots
2023-07-28 22:21:37 +01:00
toaster
2b4cd831e1 Fix on-screen alignment of Duel Intermission boxes
- Now more consistent between time/score and rankings mode
- Symmetrical if you flipped the screen, no slight rightward bias in placement
2023-07-26 16:51:05 +01:00
toaster
8553581d80 Improved behaviour for skipping second half of intermission in offline games
Instead of tying it directly to the number of players, instead base it on whether the points are important to keep track of.
- Match Race or Time Attack
- No next map override, since points will persist to that one
- No maps queued, so points aren't relevant
    - OR maps are queued but you haven't started them yet, so the points will be discarded
2023-07-26 15:51:39 +01:00
toaster
23f479f365 Intermission - DUEL mode
Show players' appearances on intermissions with less than or equal to 2 players, in port priority order, to mimic Sonic 3 Competition.

Also shows player letter and profile name in Match Race, to really drive the reference home.
2023-07-26 14:31:50 +01:00
toaster
c5dc430b50 V_6WIDTHSPACE no longer a pitfall for using V_DrawThinString
The bunched text behaviour is now the primary mode of operation for TINY_FONT.
2023-07-12 09:00:29 +01:00
toaster
a536f884ce V_ALLOWLOWERCASE --> V_FORCEUPPERCASE
Content of commit was originally written by Sal, but as a monolithic commit. The author of this commit is chunking it up for easier review.

Simple inversion on the face of things, but with a long tail of consequences, including 19 changed files.

Forced uppercase has been applied in a handful of locations where it was aesthetically imperative. Most menus will follow in another commit, so that that may be reverted if we change the default menu font.
2023-07-12 09:00:29 +01:00
toaster
e235f29dfe Sounds for Roundqueue Board, which is what I've decided I'm calling the thing at the bottom of Intermission under roundqueue conditions now
- Landing sound when doing a hop (uses a Knuckles Chaotix sound, maybe temporary)
- Meter fill sound when checking Rank for Sealed Star
- Stopping early when Rank is too low (same sound as Landing, potentially temporary if someone gets inspired)
2023-06-09 18:39:00 +01:00
toaster
36191fa4db Y_PlayerStandingsDrawer: Add slide in from bottom of screen for Pause
In the process makes all y coordinates in the function relative to a base y, so it's less fragile to future maintenance.
2023-06-07 17:46:20 +01:00
toaster
6ae7f1f64f Y_PlayerStandingsDrawer: Fix showing invalid data increase text on tab rankings after an SP intermission 2023-06-07 17:46:20 +01:00
toaster
4dfa74796a Merge branch 'podium-music' into 'master'
Podium Music + rank fixes

See merge request KartKrew/Kart!1270
2023-06-05 14:41:42 +00:00
toaster
3c505e2676 K_UpdateGPRank
- The previous location for updating grandprixinfo.rank.position and grandprixinfo.rank.skin was too early.
    - K_GetPodiumPosition checks player->score
    - Y_StartIntermission calls Y_CalculateMatchData
    - Y_CalculateMatchData checks K_CalculateGPGrade... which uses invalid position info to determine grade!
    - Y_CalculateMatchData updates player score
- To this end, rearrange Y_CalculateMatchData to accomodate.
    - Calls K_UpdateGPRank.
    - Then, calls K_CalculateGPGrade.
- Also called after G_UpdateVisited if no intermission occours, for general consistency.
- In addition, adjust so earlier players have port priority for skin saved to gamedata.
2023-06-03 14:11:14 +01:00
toaster
0bec8317f3 Y_DetermineIntermissionType: Make this function the sole authority on whether an intermission occours or not.
A return to cleanliness in G_DoCompleted.
2023-06-02 20:51:48 +01:00
toaster
569ec11624 Y_PlayerStandingsDrawer: Show the points increase(/decrease)
Shows in the same position as ping.
Also, pushes the results slightly closer together horizontally if ping/increase is visible.
2023-05-17 15:40:08 +01:00
toaster
6711887179 Y_IntermissionDrawer: Improved header string handling
- Center generalised text without the "got through round" backing
- For spectators observing a Round Queue, show "ROUND (n)" at the top instead of the more generalised fallback strings
2023-05-15 17:47:39 +01:00
toaster
33bec3c99c Y_IntermissionDrawer: Draw the foreground border on widescreen resolutions
Also changes the position of the Replay Save message to not get cut off
2023-05-15 17:41:29 +01:00
toaster
de22fc8ff1 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into profile-restrictions
# Conflicts:
#	src/hu_stuff.c
#	src/y_inter.c
2023-05-12 13:42:50 +01:00
toaster
9179e6fd86 Since intermission is bordered, don't do widescreen accomodation for the Standings xoffset slide 2023-05-11 23:12:57 +01:00
toaster
39682a241d Y_PlayerStandingsDrawer: Set a minimum y height to prevent overlap with the header text 2023-05-11 23:08:26 +01:00
toaster
c9b438d50d Show Round Queue on Pause menu
Also includes secret support for widescreen.
I was planning to put this on tab rankings, which doesn't have borders.
Pause menu does, but it would be a waste to strip it back out again.
2023-05-11 22:44:09 +01:00
toaster
c1eb01c03d Ping for Y_PlayerStandingsDrawer
TODO: CPU indicator
2023-05-11 21:39:06 +01:00
toaster
7081e98d9b Y_PlayerStandingsDrawer: Abstract y_data_t inputs
In the process, fix a longstanding interp bug where the jitter on tally increase would be for only one rendered frame, not one full tic.
2023-05-11 18:09:57 +01:00
toaster
efa849c8cc Y_PlayerStandingsDrawer: Make player index referencing in loop cleaner 2023-05-11 16:46:03 +01:00
toaster
c712cd7452 Prepare value string for intermission screen once, rather than every rendered frame
("RETIRED.", "0:24:13", "27", "1004", "----", etc)
2023-05-11 16:37:06 +01:00
toaster
77aa563a74 Depointerify several properties on y_data
- character is written directly
- color is written directly
- no more duplication of the player_names pointer
2023-05-11 16:36:03 +01:00
toaster
d581389c9c Y_PlayerStandingsDrawer: All local splitscreen players are now highlighted on the results screen
- Uses function pointers to highlight display players instead in demo playback
- Was previously doing this to avoid all players being highlighted in local splitscreen, but this is now relevant there too thanks to bots
2023-05-11 14:44:27 +01:00