These will always enter infinite loops in read_exact under correct use
when there is not enough data in them to read to the buffer, so we can
throw out early for EOF in those scenarios.
- Only show `Lap 0/Lap 1` if numlaps > 1, to match other circumstances where laps aren't real
- Only show player roundscore if gametype supports roundscore
- Otherwise accept a blank right side of the player bar in custom gametypes. (one day for Lua..?)
The intersection between processed buttons and raw keyboard data is a messy one and will probably never be perfect, but it is now consistent.
- Never overwrite a valid keyboard menuKey recieved this frame with a -1 if a different type of event is recieved as well.
- Store previous state of dpad_lr and dpad_ud on menucmd struct.
- Previously, if `a` was bound to Turn Left, it could produce a valid menuKey for one frame, then be considered a leftward input - switching from manual keyboard to Virtual Keyboard.
- It still only produces a valid menuKey for one frame... but we simply filter out leftward inputs that are older than this frame to keep things (relatively) clean.
- Show a textbox (with highlighted border) so the console font is more likely to be legible.
- Increases the width of the virtual keys to match this.
- Show menu entry name and tooltip on faded view (if they exist), for additional context for what you're writing
- Make the text entry and the virtual keys slide seperately
This function impl does not change any GL drawing state, and neither
should Vulkan, so the constraint that this function not be called while
a graphics context is active is not necessary.
This prevented hashing of non-const qualified types. The contract for
std::hash already implies that it is a callable for an lvalue reference
of the template type.
The reference, compare mask and write mask for each face direction in
the stencil test is now dynamic pipeline state and are implicitly set to
default values when a pipeline is bound. This is implementable using
Vulkan dynamic pipeline state bits and so there is no reason not to
provide it.
In the OpenGL implementation of RHI, this requires tracking some stencil
state internally in the graphics context because the stencil state
functions require multiple inputs that do not cleanly map to the Vulkan
equivalents.
- `_OCEAN` on first launch without profile set, to avoid skipping between three different tracks in quick succession
- 'FILE' if you create a new profile on first launch OR if you go into Options->Profiles
In addition, don't show the pause menu PAUSED in modeattacking/netgames
This text is now snapto-affected, since we can't (or at least shouldn't) summon the widescreen border in regular pause instances.
- Variable width key support
- Rearrangement of keys to take advantage of this
- Uses thin strings
- Or arrow sigils for backspace/shift
- Shift and caps lock have been visually combined to match other virtual keyboards
- Press shift once to enable shift, press again to disable shift and enable caps lock
- Indicator light on shift to show capslock state
The original written comment by Callum remarks that it was good for writing IP addresses, and this makes it apply to the IP address Online Menu field...
Also adds better comments.
- Use easing functions for the rubberbanding values themselves, for more fine-control over the end-points and the curves.
- Fixed K_UpdateRubberband being broken from using shift instead of divide.
- Rename `debugbotpredict` to `debugbots`, it now displays some of the bots' botvars values as well. If the player isn't a bot, it will show them from the first place bot (for inspecting the rubberband value).
- Bot turning buff was increased, from x1.25 to x2.0. Noticed that Tails bots were failing turns on Popcorn Workshop. I personally think that Tails bots shouldn't be failing very many turns unless if they're finding objects, and constant wall-bumping should be reserved for Eggman and Metal :P
This removes a call to G_DestroyParty from CL_ClearPlayer.
The problem with calling it from there is that the
consoleplayer of a splitscreen is removed first, the local
party is cleared. Then G_LeaveParty assert fails when the
next splitscreen player is removed because the console's
party was already cleared.
- Lv.1 has a significanty lower minimum top speed (from 75% -> 50%)
- Lv.MAX has a significantly higher minimum top speed (from 112.5% -> 125%)
- Every bot level has a slightly lower maximum top speed (Lv.1: 100% -> 80%, Lv.MAX: 220% -> 200%)
- Uses easing functions now to make the distance rubberbanding applies to, and the rubberbanding curves, much more customizable.