Commit graph

550 commits

Author SHA1 Message Date
toaster
0757d39930 Slight cleanup after extraction
Fixes Lua being able to hide the timer in the corner
2023-05-11 14:32:41 +01:00
toaster
7ddbd23f98 Y_PlayerStandingsDrawer
*Also* reduces how absolutely monolithic Y_IntermissionDrawer is.
2023-05-11 14:24:49 +01:00
toaster
0a7e8d9bf3 Y_RoundQueueDrawer
Reduces how absolutely monolithic Y_IntermissionDrawer is.
2023-05-11 14:08:09 +01:00
toaster
e3c3a8c80a Sliding of the progression bar
- On the last non-rank-restricted round in the queue, if the final entry is visible (you've been to it before OR you're just about to go to it for the first time), slide over before the bar fills up.
- Adds one second to the timer to give it extra breathing room
2023-05-10 20:40:01 +01:00
toaster
174b58c043 Pixel perfect progression bar filling
- Final line now ALSO uses ClipRect
- Reduce existing overreliance on ClipRect. A little overdraw is fine to prevent gaps
2023-05-10 14:42:59 +01:00
toaster
d0daa09637 Interpolation of the Player Pin when moving to new round
- Known hack: A one-frame offset if R_UsingFrameInterpolation() returns true
    - This permits the Sealed Star rank progression bar fill to reach the end.
    - It also allows us to match possible sound cue events between interp and non-interp frames.
2023-05-10 14:42:59 +01:00
toaster
cc4dbe48cf Adjust timing of player pin hop impact 2023-05-10 14:42:58 +01:00
toaster
db5734b64d On second thoughts, do not make the one-round roundqueue start in the upward position
This is so the two-round roundqueue condition where the second round is a Sealed Star will not give the game away early, or be discontinuous
2023-05-10 14:42:58 +01:00
toaster
b4a1b7daf3 Fix horizontal page scroll for cases where player results are centered 2023-05-10 14:42:58 +01:00
toaster
f42192f21d data.mainplayer
Instead of using whiteplayer (which isn't handled in splitscreen)
- Get the highest-ranked non-spectator player who's local (or display if demo.playback)
- Show an alternate arrow (currently not in assets) if
    - no player was found
    - OR the player becomes a spectator
    - OR has otherwise invalid properties
- Use SKINCOLOR_WHITE (and its invcolor) for associated colormaps in this case
2023-05-10 14:42:58 +01:00
toaster
0c63b76364 Funny little parabola for player pin on progression bar when progressing to new round 2023-05-10 14:42:57 +01:00
toaster
5a20a4756f Judder on incomplete fill for rank-based progression to Sealed Star
- Cleaner handling of player arrow position through addition rather than overwrite
- Cleaner inputs to FixedDiv
2023-05-10 14:42:57 +01:00
toaster
9fca550ab6 Line meter fill animation for grade at the end of the race rounds in GP
TODO:
- Interpolation
- Sounds
2023-05-10 14:42:57 +01:00
toaster
9352b3ef07 Make the one-round case of the roundqueue more visually interesting 2023-05-10 14:42:57 +01:00
toaster
679e901e5f Fix not having a background ramp upwards when the first entry in the round queue is on the "upper level" of the zigzag 2023-05-10 14:42:57 +01:00
toaster
b63246ccaf Fix erroneous case if there wasn't a special stage in the cup but gamedata->everseenspecial was true 2023-05-10 14:42:57 +01:00
toaster
4cb639307c Roundqueue rank-restricted entry special case visual
- Show if you've ever visited a Special Stage
- Show if you're on the final non-Special Stage cup round and you're on pace to enter
- A horizontal line to the Prize option, which has its own unique bump around it.
    - Frustratingly has to be done inside the loop, due to overlap and order of operation issues.
2023-05-10 14:42:56 +01:00
toaster
a333b265b4 Clean up material that is no longer necessary to keep around 2023-05-10 14:42:56 +01:00
toaster
0d9f8076f8 Re-add Auto gamespeed scramble text (temporary height) 2023-05-10 14:42:56 +01:00
toaster
f4f52ede32 New consistent between-round countdowns using SmallNums
- Intermission
    - Unlike before, shows in all contexts, not just netgame/netreplay
- Voting
    - Replaces currently extant counter
2023-05-10 14:42:56 +01:00
toaster
84a2a94b28 Reimplement bottom progression bar
- Actually accomodates variable-length cups/roundqueues
- Uses player skin and color for position indicator instead of iterating through results
TODO: Make the Sealed Star entry a special case
2023-05-10 14:42:56 +01:00
toaster
208f7d3b81 Improve header text handling
- Text on the header
    - If they won, show [skin realname] GOT THROUGH ROUND
        - This branch was showing this previously but inexplicably only had the skin realname when in GP
    - If they retired, show NO CONTEST...
    - Else, show spectator non-participation text
        - if GT_VERSUS, show Boss name
        - if battleprisons, "PRISON BREAK"
        - else, "[gametype name] STAGE"
            - Matches S1/S2 "SPECIAL STAGE" non-completion text
- Scrolls with the page
    - Second page text always reads "TOTAL RANKINGS"
2023-05-10 14:42:55 +01:00
toaster
4ffb5f2e10 Improvements to background handling
- Don't draw Lua HUD hook behind the background
- Flip background in Encore mode
- Only animate scrolling elements when not paused or P_AutoPause
- Don't clobber the (TC_DEFAULT, SKINCOLOR_YELLOW) cache, instead use (TC_RAINBOW, SKINCOLOR_INTERMISSION) directly
- Clearer variable name for background colormap (color to bgcolor)
2023-05-10 14:42:55 +01:00
toaster
2ca9f1aee5 Rename and rearrange the difficult-to-interpret patch variable names for the GP bottom progression visual
`rrmrk1` is now `level_dot[BPP_DONE]`, for example.
BPP is short for "Bottom Progression Patch"

This is a necessary prerequisite to making the roundqueue visuals dynamic, but that is not yet the case
2023-05-10 14:42:55 +01:00
toaster
aa925be7c5 Reimplement player result data
- A series of bars with stuff on them.
    - Player position num
    - Player character + color (via minimap icon)
        - Uses MINIDEAD if a bot NO CONTESTs
    - Player name (Aqua text instead of white if you're the main player)
    - Player TIME/SCORE/RANK/PWR depending on context
        - NO CONTEST now reads "RETIRED."
            - More economical use of more limited space
            - Gives failure a slightly different flavor to the previous entry in the series
- Re-implements the slide when switching from TIME/SCORE to RANK/PWR
- These are automatically spaced in varying degrees to try and use as much or as little space as possible, given the bars are fixed width.
    - 1 to 3 players: Center-aligned column of result bars
    - 4 to 6 players: Two columns of result bars, 1 extra pixel of vertical spacing
    - 7 to 10 players: Two columns of result bars
    - 11 to 16 players: Two columns of result bars, 1 less pixel of vertical spacing

TODO:
- "LAGLESS" host name-and-shame, which the revamped screen was not designed around
- Adjusting position of other entries on the screen to accomodate higher quantities of players
- Adjust spacing of other graphics on the screen to prevent overlap
2023-05-10 14:42:55 +01:00
toaster
06c4a898e2 First steps at reimplementing functionality
- Re-add demo save HUD
- Re-add skip for drawing 3D scene required since Twodee
- Re-add Lua-controlled HUD disabling
- Cleanup for 0 instead of NULL in pointer field of patch drawer macros
- Cleanup for more extra tabs than the browser session of someone with ADHD
2023-05-10 14:42:55 +01:00
toaster
ae7830b9ab Compilation fixes
- grandprixinfo.roundnum --> roundqueue.roundnum
- comment out unused patch
2023-05-10 14:42:54 +01:00
wolfy852
7712074b29 Make line colors reflect progress 2023-05-10 14:42:54 +01:00
wolfy852
465369f383 Logic for progress display markers 2023-05-10 14:42:54 +01:00
wolfy852
b20c16f3fd Draw remaining assets, GP restriction 2023-05-10 14:42:54 +01:00
James R
582b76f168 Intermission: fix marquee scroll 2023-05-10 14:42:54 +01:00
wolfy852
aa94bdb7cc Fix scroll directions 2023-05-10 14:42:54 +01:00
wolfy852
f8c1a0f758 WIP: Marquee & Checker scrolling
Bad numbers. Scroll is happening, just not the way we want it to.
2023-05-10 14:42:53 +01:00
wolfy852
ddd8f84648 Use a more descriptive var name 2023-05-10 14:42:53 +01:00
wolfy852
b1524a8c7f intermission skincolor + demolition of sanity 2023-05-10 14:42:53 +01:00
wolfy852
e7d46c3c0a V_MODULATE -> V_SUBTRACT 2023-05-10 14:42:53 +01:00
wolfy852
2496502b31 Draw marquee, checker, and player icon 2023-05-10 14:42:53 +01:00
wolfy852
1167105ba2 V_DrawFixedPatch -> V_DrawMappedPatch 2023-05-10 14:42:53 +01:00
wolfy852
f53e0398d5 lines 2023-05-10 14:42:52 +01:00
wolfy852
3070c2037b New intermission base
Very incomplete. Currently draws the background and most of the necessary patches. Ignore some of the stupid shit I did here, it'll be cleaned up later.
2023-05-10 14:42:52 +01:00
wolfy852
1e2c3b8657 Dummy out old intermission code, draw level icon as background 2023-05-10 14:42:52 +01:00
toaster
b72bc73d28 Two new command automation events
- "QueueStart"
    - Activates just before RoundStart, but only if a roundqueue is being started
- "QueueEnd"
    - Activates just before IntermissionStart, but only if the roundqueue has just finished its final map
I chose before in both instances because Automate_Run runs off COM_BufAddText, and I don't completely trust that the buffer won't overflow for particularly complicated server commands, so prioritising the rarer event. However, this is open for discussion
2023-05-03 22:08:13 +01:00
toaster
581567dfae musiccountdown
A system for level completion jingles.
- G_Ticker
    - Call P_EndingMusic after a certain amount of time has elapsed to begin a jingle
    - Play O_RACENT after the jingle's completion instead of baking it or an equivalent into the music
- P_EndingMusic
    - Change the function signature to not take a player
    - Pick from a series of const char* jingles, instead of sprintfing into a buffer
        - _first
        - _win
        - _lose
        - RETIRE
    - Simplifying logic to handle intermission music
2023-04-30 21:47:07 +01:00
AJ Martinez
5b4725a011 WIP: Social restrictions until you've played some games 2023-04-22 21:02:36 -07:00
toaster
7d1e1a578e (Will merge conflict with new intermission) Do not show advancemap string if roundqueue (or nextmapoverride) will have effect next round 2023-04-11 17:18:29 +01:00
Sally Coolatta
15f60a1f14 Split thing voting screen to a new file 2023-04-03 20:57:31 -04:00
SteelT
65e8315bd9 Update thin strings to use V_6WIDTHSPACE 2023-03-04 01:02:21 -05:00
SteelT
31e2c1567e Update replay save prompts to use the new button graphics
- A K_drawButtonAnim function is also provided for convince, since I figured it would have more future uses
- This also makes all of the button patches global, in addition
2023-03-03 23:19:46 -05:00
Eidolon
1958394635 hwr2: add g_wipeskiprender 1-frame workaround 2023-02-26 18:47:42 -06:00
toaster
e0ac6b6044 Music credits show up in more contexts
- Drawn over the top of basically everything when enabled.
- Update song credit on
    - Menu music update (can sometimes clear it)
    - Intermission begin
    - Vote begin
    - Return to title (by clearing it)
2023-02-25 22:54:36 +00:00