Commit graph

46 commits

Author SHA1 Message Date
toaster
d98b88a61f M_DrawChallengeTile: The non-category size of SECRET_MAP will now show a "map face", ala Map Anger/menu Round Queue 2025-08-15 13:20:09 +01:00
Sally Coolatta
8ed97a013f Fix stage striking copypaste error for Battle
(Blatantly incorrect, so I'm pushing to master.)
2025-06-04 02:23:41 -04:00
toaster
830cfe76da Round Queue UI on Level Select
- Only works in Match Race and Online level selects
- Shows in-progress state on Pause and Cup Grid, but no direct influence available on those screens
- Z to queue current highlighted map
    - Pending until you press A, then sent to server
    - When done online, tries to send one at a time to avoid overloading connection
- C to clear
    - Removes one from pending first
    - If you're out of pending maps, prompts whether you want to clear server's queue
2025-06-01 00:25:20 +01:00
Antonio Martinez
28f12acab1 Merge remote-tracking branch 'origin/master' into duel 2025-05-24 16:34:36 -04:00
James R
628aab60c3 Fix picked map anger vote looking for invalid player
It was looking to see if the local player picked the map
to play the cheer sound effect.
2025-05-20 00:55:16 -07:00
Eidolon
e4fc3cc5c2 Fix conditionals on rendermode to allow for more modes 2025-03-12 21:50:37 -05:00
Eidolon
cb7f437e60 Merge public master 2025-02-13 15:48:11 -06:00
Eidolon
a4d304a1f5 Update copyright years to 2025 2025-02-13 15:32:26 -06:00
Eidolon
22b20b5877 Add netgame voice chat
Implemented using libopus for the Opus codec, same as is used in Discord.
This adds the following cvars:

- `voice_chat` On/Off, triggers self-deafen state on server via weaponprefs
- `voice_mode` Activity/PTT
- `voice_selfmute` On/Off, triggers self-mute state on server via weaponprefs
- `voice_inputamp` -30 to 30, scales input by value in decibels
- `voice_activationthreshold` -30 to 0, if any peak in a frame is higher, activates voice
- `voice_loopback` On/Off, plays back local transcoded voice
- `voice_proximity` On/Off, enables proximity effects for server
- `voice_distanceattenuation_distance` distance in fracunits to scale voice volume over
- `voice_distanceattenuation_factor` distance in logarithmic factor to scale voice volume by distance to. e.g. 0.5 for "half as loud" at or above max distance
- `voice_stereopanning_factor` at 1.0, player voices are panned to left or right speaker, scaling to no effect at 0.0
- `voice_concurrentattenuation_factor` the logarithmic factor to attenuate player voices with concurrent speakers
- `voice_concurrentattenuation_min` the minimum concurrent speakers before global concurrent speaker attenuation
- `voice_concurrentattenuation_max` the maximum concurrent speakers for full global concurrent speaker attenuation
- `voice_servermute` whether voice chat is enabled on this server. visible from MS via bitflag
- `voicevolume` local volume of all voice playback

A Voice Options menu is added with a subset of these options, and Server Options has server mute.
2024-12-13 17:12:14 -06:00
Sally Coolatta
e21cf463ea Duel vote: More conveyance
- Show X over selection, to make it more obvious when it's rip snortin' time
- "Waiting for [player]..." when it's not your turn
- Halve vote timer in Duels (maybe make a separate cvar?)
- Fix bots sometimes striking stages out realllllly slowly
2024-09-03 20:56:36 -04:00
Sally Coolatta
141a37c48a Duel voting
Instead of voting for the level you want and the pick is decided by RNG ... now you take turns picking the maps you *don't* want, and the last one remaining gets picked. The previous loser gets to strike two stages and goes first, while the previous winner only gets to strike one.

Very incomplete visuals, very janky.
2024-09-03 20:08:04 -04:00
Sally Coolatta
3020f9c3ef Fix map anger race condition
Was making angry maps never actually get picked. Dang.
2024-09-02 04:20:39 -04:00
Sally Coolatta
9b63fb4078 Fix map anger race condition
Was making angry maps never actually get picked. Dang.
2024-09-02 04:20:04 -04:00
Sally Coolatta
51fd4ea562 Don't animate vote planet for reduce vfx
... instead of the temporary black BG.
2024-04-13 16:55:54 -04:00
Sally Coolatta
7dfa597c7d SRB2 -> DRRR copyright in src, acs, android folder
Be consistent with toaster's recent changes to copyright
2024-04-05 02:08:23 -04:00
James R
1e6c401e96 Y_DrawVoteBackground: use unsigned type to avoid negative modulo into underflow
- Fixes a rare crash if the vote screen has been present
  enough times
2024-03-27 03:43:15 -07:00
James R
ef69ed8b8d Vote: ignore inputs while chat is open 2024-03-14 06:54:42 -07:00
James R
62195e3165 Vote: fix sounds stacking when restarting vote screen 2024-03-11 03:10:55 -07:00
Sally Coolatta
9b93f56111 Add pre-Podium intermission music 2024-03-10 14:08:59 -04:00
Sally Coolatta
a7df7aa637 Add Medium Font
Monospaced in-between of Console & Thin
2024-01-27 20:38:52 -05:00
Sally Coolatta
f4db29574d Vote level names 2024-01-27 18:10:44 -05:00
Sally Coolatta
0911edbeda Bigger graphics for selectors 2024-01-24 14:04:23 -05:00
Sally Coolatta
d7cb961e37 Selectors for votes in splitscreen
Kind of an embarrassing issue we had during the demoing.
2024-01-22 18:29:27 -05:00
Sally Coolatta
5207af40b1 Fix odd low player count servers
Has been killing me ever since it got into master. When vote count changes, one of the votes won't be sliding back and forth across the entire screen.
2023-11-22 20:14:01 -05:00
Sally Coolatta
770293e04c Dimmed votes are greyscale
Makes the visuals on the voting screen significantly more clear
2023-11-22 19:44:39 -05:00
toaster
41d96a0dcc deferencoremode: Don't set to non-boolean value
Found while making general fixes to encoremode behaviour in previous commits, forgot to commit.
2023-10-24 23:10:17 +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
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
AJ Martinez
658177243b Required anger rounds 5 -> 3 2023-07-30 01:55:09 -07: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
Sally Coolatta
16df36b65b Draw fill instead of BG for Ivo until RHI bug fix 2023-04-10 23:52:37 -04:00
Sally Coolatta
9de36ce2a9 Slide out votes when you're done voting 2023-04-10 23:14:25 -04:00
Sally Coolatta
d2960ce93d Don't allow resending vote if you have delay 2023-04-10 23:12:08 -04:00
Sally Coolatta
31728166ca Adjust map anger conditions
Don't reset map anger when it votes for itself -- wait until the map gets played or it gets a genuine vote from someone.
2023-04-10 02:27:48 -04:00
Sally Coolatta
9c4ace6fbc Map anger
- Maps build anger every time a map isn't selected by anyone.
- If a map is ignored for 4 votes in a row, then on the 5th vote it shows up it will be angry enough to vote for itself when everyone else finishes voting.
- Once it gives its funny vote, or it gets played, it will calm down again.
- 13P+ vote icons are implemented; it's just a basic circle though cuz lazy.
- Made the roulette finish even faster.
- Bots can vote again but now behind a debug cvar.
2023-04-10 02:10:06 -04:00
Sally Coolatta
95540888ce Handle timed out votes properly again
Instead of picking random, we ask the client for what their cursor is on. If it takes too long to arrive, then we ignore their vote.

Also: fixed a crash if the nextmap was never set during voting (can happen via many 0-players fallbacks, and especially now that it needs to check for client responses on a time out), by always initializing to the first map in the vote.
2023-04-10 02:10:05 -04:00
Sally Coolatta
505595b5d8 Fix ruby scale & position on vote screen 2023-04-10 02:10:04 -04:00
Sally Coolatta
2d8905c816 Handle Encore ruby in Y_DrawVoteThumbnail 2023-04-10 02:10:04 -04:00
Sally Coolatta
11eadd4e75 Add player icon to BG votes 2023-04-10 02:10:03 -04:00
Sally Coolatta
63fdd48b8f Implement BG catchers 2023-04-10 02:10:03 -04:00
Sally Coolatta
81871bc73b Rewrite random map buffer
Each map now just has a countdown for when they'll reappear (stored in mapheader), which gets decremented each time a new map is played. This means it's now compatible across gametype switches, is a lot less complex, and is easy to retrieve the value for a specific map without needing to iterate constantly.

Lots of the old unused code surrounding this function was also removed. Lastly, added a PARANOIA check for callAgainSoon being mishandled.
2023-04-10 02:10:03 -04:00
Sally Coolatta
b799862ccb Implement FG catchers
- Catcher comes down to grab your selection. (Needs per-player arrows, as discussed last night.)
- Catcher has more accurate rainbow cycle. Just looks a bit cleaner.
- Vote thumbnails now have outlines & dims, instead of transparency.
- Put voting roulette code into its own struct.
- Sped up voting roulette. (although it's not visible currently)
- Made modify vote stricter (kick hacked clients trying to do funky stuff)
- Added VOTE_TIME_WAIT_FOR_VOTE define. If enabled, voting timer will only start when any player gives a vote. Currently disable because it'd be exploitable without mid-game vote joining.
2023-04-10 02:10:01 -04:00
Sally Coolatta
7641c6a276 ModifyClientVote sends a netxcmd for the player
It was implemented before SendNetXCmdForPlayer, so it used to just send it from the consoleplayer and just attach the player number separately. Now the packet will actually be guaranteed to come from the player that wants to change their vote. (Probably was fuckin possible to just change everyone else's votes with a hacked client before, right)
2023-04-10 02:10:00 -04:00
Sally Coolatta
8432d7e552 Big vote screen cleanup
- 4th map is now a regular option instead of dice.
- Add function to draw a maintained Combi Catcher object on screen.
- Put all vote static variables into either a "vote" struct or a "vote_draw" struct, if it's logic or drawing code.
- Prefix netcode vote globals with _g.
- Add enums/defines for vote magic numbers.
2023-04-10 02:09:59 -04:00
Sally Coolatta
f1ec39764f New voting screen background 2023-04-10 02:09:59 -04:00
Sally Coolatta
15f60a1f14 Split thing voting screen to a new file 2023-04-03 20:57:31 -04:00