- Uses P_GetNextEmerald to determine the associated emerald. Earlier work paying dividends!
- Color selected matching Cup Select screen
- New states which can be used in other contexts
- S_SUPEREMERALD1 and S_SUPEREMERALD2
- S_SUPEREMERALD_UNDER
- Uses a lot of existing apparatus, just leveraged to draw horizontally instead of a full map.
- Currently only functional in Sealed Star contexts, due to K_GetCircuitLength having no clean alternative for sprint tracks.
- Tracks Catcher/Emerald.
- K_drawKartProgressionMinimapIcon and K_getKartProgressionMinimapDistance
- Abstracts the progress of converting distance to finish into a position on the bar.
- Sibling function of K_drawKartMinimapIcon
- The author of this commit wanted to make it an alternate outcome of this function, which it shares a lot of similarity with, but doing waypoint traversal in HUD for objects that don't independently track their distance would absolutely tank performance.
- Tidying up in the main function permitted less minimap state to be used in these.
- Use a minimap-like graphic for the background area
- The goofy name comes from a delightfully awful development conversation
- Make the entire thing snap to the screen's bottom and slide in
- Fix a potential sqrt of a negative/zero value
- Handles putting an object into the hyuu's inventory.
- Permits Sink conversion for items which are a little too powerful to give to someone who was JUST in first place.
- For now, the item to convert is an SPB.
There can be very many precipmobjs in a sector. During BSP
rendering, for each sector reached by BSP (the entire
visible level at least), all the precipmobjs would be
iterated and their distance from the camera calculated, to
determine whether they are within draw distance.
The issue with the old approach is that there really are
too many precipmobjs in each sector. By iterating the
blockmap within a certain range instead, precipmobjs
out of view are not iterated at all, saving some time.
Caveat: drawdist_precip is no longer respected as an
exact value, since it must round to the precision of the
blockmap.
List of potentially scary changes:
- Removes snext/sprev for precipmobj_t
- Removes preciplist for sector_t
- Adds bnext/bprev for precipmobj_t
- mobj_t and precipmobj_t field offsets are symmetrical
- Modified P_SetPrecipitationThingPosition and P_SetThingPosition
- The syntax in these functions is kind of wacky
This can effectively award the performance of a thok
barrier automatically, for walls that completely fill the
screen vertically. (Not pegged midtextures.)
Prep for creating a third variant. Control flow is largely
the same between these two leveraging if constexpr seems
appropriate.
Also splits the crunch goto label away into a new function
called R_CrunchWallSegment.
Previously, line-based portals accessed global
ceilingclip/floorclip before the current seg was rendered.
This means clipping for such portals would be based on
whichever seg happened to render before. Additionally,
ceilingclip/floorclip have more to do with clipping the
visplanes than the height of the wall between (for
instance, using these values doesn't work for two-sided
lines that create a "window" between the planes). The
correct approach that should always work is using the
midtexture's height from inside of R_RenderSegLoop.
- Make the check consistent between HUD and Challenge conditions by revolving both around M_NotFreePlay.
- The HUD appearance checked every individual component of K_CanChangeRules, so just straight up do that here.
- If the rules can be changed, battleprisons is always FREE PLAY no matter how many players are present (because it can change quickly).
- On level load for GT_TUTORIAL:
- Forces to requested skin (or Eggman if not specified).
- Named `relevantskin` and not `tutorialskin` in case it's useful to use the same apparatus later for Adventure.
- Also sets default skincolor and disables follower.
- Replaces `tutorialmode`.
- Forces gamespeed to Easy, with no POSITION.
- Laps are currently disabled as well, but this can be changed if necessary.
- Hides Free Play.
- Does not count as a played round (except for Chao Keys).
`tutorialmap` has also been removed. This will be replaced in a later commit with something that plays nicer with Ring Racers' existing systems.
- Cooperative gametypes do not count as FREE PLAY
- Sealed Stars count as a Cooperative gametype
- Fix Battle Fullscreen having had inverted presence of FREE PLAY since bosses were added