- Don't apply mindelay to clients that are already slower than their mindelay, WTF
- Don't double apply mindelay to hosts to compensate for the above, WTF
Calls to F_ContinueCredits and D_StartTitle, even if deferred,
change the current gamestate. However, the tic loop in TryRunTics
may still have a couple tics to execute to catch up to current
time, and as a consequence G_Ticker may execute game logic while
the current state is not GS_LEVEL or equivalent. As a result, it is
highly likely for the game to crash.
This adds deferred credits start to the tic loop, and exits that
loop if either title or credits are supposed to start after the
current iteration, fixing this crash scenario.
FixesKartKrew/Kart#1185
Was previously based on the delay at the moment of
calculation, which may fluctuate. I changed it to use the
average because the number was flickering in the HUD.
Servers should get enough free for a healthy launch ecosystem, but not everything.
We'll give the relevant password out after, like, the first week probably? Please be patient, commit-diver
- Menu string for server count
- Thin string for server name
- Gear instead of difficulty (renamed to keep the old assets just in case online GP)
- Pwr fixes
- Handle -1 case as "No Pwr"
- Adjust draw coords a little
- Custom gametype support
- Shows name as net-communicated instead of Pwr
- Affects d_clisrv side a little bit too
- All custom gametypes MUST show up on the Modded room, no exceptions
- Cache gametype info instead of constant strcmp
The problem with adding files mid-netgame was that the order is:
- menu code sends netxcmd for addfile
- getpackets processes addfile, sets refreshdirmenu
- NEW GAMETIC
- refreshdirmenu is set to 0
- menu code looks for refreshdirmenu, comes up empty
Now, the order is:
- menu code sends netxcmd for addfile
- refreshdirmenu is set to 0
- getpackets processes addfile, sets refreshdirmenu
- NEW GAMETIC
- menu code looks for refreshdirmenu, successfully finds it
- refreshdirmenu is set to 0
Guarantees netUnlocked is correctly updated in most contexts, since that's dependent on SV_ResetServer, which isn't called if a server is running
Also guarantees titlemapinaction isn't true during regular play
- If you called R_ResetViewInterpolation once but G_Ticker
got called more than once, then the effect of
R_ResetViewInterpolation would be cancelled
- This should be a comprehensive solution to the titlemap
camera bug
- Multiple tests:
- -skipintro
- -warp, then exit to title
- map command, then exit to title
- Wait for attract demo, then skip and exit to title
- All inputs create input events that get stored in a very
small buffer
- Normally, the game listens for some inputs and then
immediately processes them and updates the button state
in-game
- However, during wipes the processing step would not
happen and it would just let the events pile up
- Because the buffer is small though, it would quickly
fill up and lose some events
- This would lead to button states getting stuck on some
controllers if you released a button during a wipe
- If you spun an analog stick around, this would cause
it to happen more frequently, because there is a new
event for every slight change of an analog stick's
position
Notable deletions:
- Metal Sonic Race
- Includes all the specialised recording/playback apparatus which made g_demo.c harder to read
- A bunch of hyperspecialised code inside several A_ actions
- EXCEPTION: intentfully left in the spriteless SMK stuff for Sal's add-on down the line.