Commit graph

518 commits

Author SHA1 Message Date
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
toaster
78c6d10661 Y_IntermissionDrawer: Tidy up final text drawing conditions
- Do not say "vote starts in %d" in Match Race, since it will not actually be doing so
- Show demo recording information in GP, since demos can currently be recorded there (even if info is currently incorrect on playback)
2023-02-09 23:06:41 +00:00
toaster
8f78b37e57 Fix yellowmap not being included
Was going to `#include "console.h"` but not worth it for literally one placeholder index
2023-01-01 16:02:55 +00:00
toaster
d5cd4f6798 Make placeholder for vote screen gametype color yellowmap[0] instead of 255 cyan 2023-01-01 14:54:58 +00:00
toaster
05241341b8 Remove the last few instances of gametype-specific colorisation 2022-12-31 21:38:52 +00:00
toaster
470f82104d Rework intertype_t
- Now you select based on whether you want to rank by
    - Time always (Race, Special)
    - Score always (might be useful for custom gametypes..?)
    - Time in 1P, Score otherwise (Battle, Versus)
- No longer has gametype-specific text colours on the intermission
- Also cleans up a case where invalid music could play for winning a custom gametype without GTR_CIRCUIT *or* GTR_BUMPERS
2022-12-27 14:33:58 +00:00
toaster
17dd15b998 "Special Mode" (Sealed Stars) and "Versus Mode" (bosses) are now gametypes
* The existing structs are now exclusively for handling extra data.
    * `specialStage` has been renamed to `specialstageinfo`, to reflect that it is not the sole arbiter.
    * `specialstageinfo.valid` and `bossinfo.valid` are what must be checked before grabbing data from either struct.
        * These are turned on when the gametype extra data is successfully initialised, not on map start.
            * `K_InitBossHealthBar(...)` for `bossinfo.valid`
            * `K_InitSpecialStage(void)` for `specialstageinfo.valid`
        * `K_CanChangeRules(...)` no longer checks these
    * No longer uses duplicate encore information.
* The map command (and -warp) now guesses gametype using a general `G_GuessGametypeByTOL(UINT32)` function
    * Grabs the first gametype with an overlap between the requested TOL and the gametype's TOL.
* The cool Versus-specific intro is now checked via `K_CheckBossIntro()`.
2022-12-26 23:06:24 +00:00
toaster
eb74ec3904 Change the rules for some things selected in the previous commit.
- Only show lap count and gamespeed on rankings if GTR_CIRCUIT
- Adjust offsets for speedometer/accessability icons with GTR_BUMPERS|GTR_SPHERES
- Only show Karma on Bumpers hud with GTR_KARMA
- Permit battle fullscreen without GTR_KARMA
- Make the Break The Capsules roulette show up with GTR_CAPSULES, not absence of GTR_CIRCUIT
- Don't push Break The Capsules roulette to the item list twice
- Make the special mode switching of int_battle happen for all instances of int_battle, not just GT_BATTLE
2022-12-26 22:06:26 +00:00
toaster
185b36bd27 gametype_t
- New array of pointers to structures in memory (currently mixing static for base-game and Callocated for custom)
- Centralises a metric-ton of previously seperately handled properties into one struct
    - Gametype_Names[]
    - Gametype_ConstantNames[]
    - gametypetol[]
    - timelimits[]
    - pointlimits[]
    - gametypedefaultrules[]
- Don't attempt to guess custom gametype in Replay Hut (requires more work to make custom gametypes behave across the entire experience)
- I_Error if invalid gametype set
- gametyperules is deprecated since it will never be modified seperately from gametype (temporarily a #define, don't wanna bloat this commit too much)
2022-12-26 01:07:57 +00:00
toaster
f87db3cfab Further K_DrawMapThumbnail changes.
- Precache M_NOLVL.
- Make all width calculations relative to a lump 320 pixels wide, to make outdated map thumbnails much, MUCH more visible.
- Add K_DrawLikeMapThumbnail to draw a 320x200 patch like a map thumbnail (currently used only for RANDOMLVL).
2022-12-14 13:08:06 +00:00
toaster
bd5d51ac7b K_DrawMapThumbnail
- Handles map thumbnail drawing in a way agnostic to patch size
- Specify a desired final width in pixels `<< FRACBITS`, not a scale - more specific for our incoming varied purposes.
- Encore and voting screen Random have to be handled externally
- Put in k_hud.c because I'm not sure where would be most appropriate snd it works well enough, can be moved later
2022-12-12 21:51:11 +00:00
Oni
95096fbc9a Merge branch 'special-stages' into 'master'
[Special stage prep] GP Bonus Stages + timelimit rework + Hitlag ticking fixes

Closes #236

See merge request KartKrew/Kart!739
2022-10-27 03:10:37 +00:00
James R
8e62531ff9 Fix replay save dialog activating while chat is open 2022-10-23 13:54:54 -07:00
toaster
ca2ecf6e9f Add "allowdemos" option to K_CanChangeRules()
It's been used interchangably as "this is a singleplayer gameplay context" and "This is a no cvar changing context". This addition repairs some behaviour which might have been inconsistent between netgame and netreplay.
2022-10-15 15:15:22 +01:00
toaster
f281f47c6f Support alternate gameplay events during GP
- Implementation details:
    - grandprixinfo.eventmode is the reference point
    - All bots have spectator applied and removed at map start depending on eventmode, and I've done my best to guard against side effects of not removing them entirely
    - You shouldn't turn off grandprixinfo.gp when turning on things like specialStage.active or bossinfo.boss when pursuing eventmode behaviour
    - Probably needs to be integrated into XD_MAP for any future netplay support, is currently disabled.
    - You technically don't have to assign a Capsules map to be the bonus and a Special Stage to be the special. A Capsules map can be assigned to a Special Stage too, and a Boss can be assigned to either of them.
    - Special Stages are still just as incomplete as they were before.
- Break the Capsules has special behaviour.
   - Timelimit starts at 20 seconds.
   - Earn 10 seconds (plus a little extra cheaty time) every capsule you destroy.
   - WIN + extra life if you bust all the capsules, COOL if you get some but run out of time, LOSE if you lose your bumper or run out of time without breaking a single capsule.
   - Supposed to also give you rings, but ran into a LOT of difficulty with this and didn't want to commit half-baked stuff, so it'll be a later project.
Also:
- Fix a long standing bug where totalring was reset between maps, preventing the sum from adding up across GP rounds and depriving you of extra lives you were owed.
- Fix an issue where Break the Capsules record attack was KARTSPEED_HARD.
- Send timelimitintics in savegames, since it's handled seperately now.
2022-10-14 18:34:43 +01:00
toaster
5103b804ba Simplify intermission timer code
- We had two ways of ending the intermission, but only one would actually be used, and it resulted in code duplication.
- Combine the two ways.
- Disable the reached-but-didn't-do-anything-before-now code path for setting endtic.
2022-10-13 13:12:07 +01:00
toaster
a22d3b201d Make what's going on with K_RetireBots in Y_Ticker/Y_EndIntermission more explicit, in case we add anything else here later. 2022-10-13 12:41:27 +01:00
toaster
9f4ced146a Make intermission timer-dependent material consistent via K_CanChangeRules()
Prevents setting inttime 0 in singleplayer contexts
2022-10-12 20:17:20 +01:00
toaster
1a284ec7c6 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into big-large-map-markers
# Conflicts:
#	src/d_netcmd.c
2022-09-17 13:57:26 +01:00
toaster
7e17f5456c I_Error in all situations where mapheaders were previously allocated outside of SOC.
Also:
- improved error prints for SOC condition definitions
- improved bounds checking to use `nummapheaders` for iterating over mapheaderinfo
There are still situations that use NUMMAPS like mapvisited, randmapbuffer, etc, which need to be addressed before merger.
2022-09-17 13:07:48 +01:00
toaster
46441092dc Address initial review comments + associated cleanup
- Grab thumbnail and minimap pictures even for base game maps
- Repair modified game event for replacement map load
- PU_STATIC thumbnail and minimap, freed on new file load lump discovery
- Fix W_CheckNumForMap to not SIGSEGV if no match
- Reduce the number of pointless map lump hunts, we've already got it stored
- Prevent use-after-free for map pictures on voting screen
- Cache "BLANKLVL" patch once
- Draw minimap on the time attack menu

Unfortunately cups are still broken and I'm not sure where to start on that, or if it's just not having a sample wad to test with that includes cups
2022-09-16 15:01:49 +01:00
VelocitOni
92cfb5a677 Just bringing it up to date w/ master
Got it to compile after some cleaning.
2022-09-13 19:17:39 -04:00
VelocitOni
8a5707ad83 Merge branch 'master' into hostcode 2022-09-13 17:08:15 -04:00
SteelT
c64f36309a Support reading PICTURE/MINIMAP/ENCORE/TWEAKMAP lumps from a map resource
This supersedes the header-based method of fetching those lumps.
2022-09-12 17:29:15 -04:00
toaster
3064b2cb7a Fixes for the replay post-game save interface (NOT THE ACTUAL REPLAYS OR HUT, THAT'LL BE LATER)
- `(B) or (X)` for replay saving instead of Press Lookback (HUD) or `(Y)` (input)
- Don't activate while closing pause menu if either of those buttons is shared for menu open/close
2022-09-12 16:01:37 +01:00
Sal
a7716b966a Merge branch '14plus-votechanges' into 'master'
1.4+ Voting Changes

See merge request KartKrew/Kart!655
2022-09-11 06:30:39 +00:00
Sal
94d7c497b0 Merge branch 'hooklib-port' into 'master'
Hooklib refactor ported and (mostly) squashed

See merge request KartKrew/Kart!662
2022-09-11 06:30:07 +00:00
Sally Coolatta
2fddc9f343 Merge branch 'master' into big-large-map-markers 2022-09-10 16:01:02 -04:00
toaster
975ed1f136 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into new-menus
# Conflicts:
#	src/d_main.c
2022-09-07 21:39:34 +01:00
James R
37c3a55dda Fix conflicts 522467a88 2022-09-05 11:56:30 -07:00
Sally Coolatta
abac095d06 Properly use 0 power for the guest player 2022-08-30 04:07:42 -04:00
toaster
7edec43d72 Port Gametype Preference and associated changes
Notably, makes the PWR-based Encore scrambling component of G_SometimesGetDifferentGametype WAY less spaghettified.
2022-08-28 23:36:55 +01:00
toaster
1a814885da Interpolate the Phantom Ruby floating animation.
A recommit and not a cherry-pick because the other current uses won't be relevant in new-menus.
2022-08-28 17:27:37 +01:00