Commit graph

557 commits

Author SHA1 Message Date
toaster
4a160b8951 Statistics - Maps & Medals: Draw Medal and Spray-Can graphics at native resolution 2023-09-11 09:46:01 +01:00
toaster
244db81f04 Visual adjustments to the Server Browser and Room Select
Based on VC discussions
- When you've unlocked add-ons, show "Core Servers" or "Modded Servers" in lieu of "Server Browser
- Adjust the vertical height of the Room Select graphics to not be visually overlapped
2023-08-31 20:50:15 +01:00
toaster
cd8057ed53 Room Select: Add a tooltip 2023-08-31 20:00:36 +01:00
toaster
cdf5eaaa16 Server Browser Room Select changes
Instead of putting you on the room select but forbidding changing the room...
- You haven't unlocked add-ons (formerly forced to CORE)
    - Skips the Room Select and takes you directly to the CORE mode Server Browser
- Game has add-ons loaded (formerly forced to MODDED)
    - Forbid accessing the Server Browser with a helpful message.
        - Reduces tech support burden.
        - Parity with the previous entry in the series.
2023-08-31 20:00:35 +01:00
toaster
c14ff69d9a Server Browser change alert (KartKrew/Kart-Public!277)
- Let players know if their cv_masterserver was changed, and give them the opportunity to change it back
- A limited number of nag attempts, so if people are using a legitimate custom Server Browser they won't be annoyed for the rest of the game's lifespan
- Show the Server Browser at the bottom of all online menus
    - KNOWN BUG: currently overlaps with the Join IP
        - we're redoing this menu before launch because it's buggy so this is just another bug on that pile
2023-08-31 20:00:35 +01:00
toaster
9d689c5e0c M_DrawServerCountAndHorizontalBar: Improve general overlaid text 2023-08-31 20:00:34 +01:00
toaster
7fd64a4c3d Get the Server Browser working again
- KartKrew/Kart-Public!313 has finally been integrated with the changed menu code
    - Attempts multiple times to get every public server, up to nettimeout
    - Clear the server list when entering/exiting and refrehing
    - Show visible servers and potential servers opposite the Refresh input
    - I would have done this in another commit, but the system was too broken to repair without just putting the working solution in wholesale
- Improved visual scrolling behaviour
- Pressing A actually joins the server
- CORE vs MODDED is handled in SL_InsertServer, not a seperate function to drop/memcpy things around

Also, abstract out the little "PLEASE WAIT..." message popup during potential IO block into M_PleaseWait (only used on connect process via Menu)
2023-08-31 20:00:33 +01:00
toaster
92bd71496e VC review
- Continue showing up on main in-game pause menu
- Flip to top half of screen, to avoid conflict with Round Queue
- Show over most UI, including menu
2023-08-25 21:41:15 +01:00
toaster
6d2e120e77 M_DrawCharSelectCircle: Fix offset colour id when number of colors available is odd VS even 2023-08-23 17:54:09 +01:00
toaster
e1b7cb66cb Rework the Spray Can system to ACTUALLY be what we want
Instead of being specific to each level, Spray Cans are stored in a list on gamedata that will be stepped along each Spray Can you collect.
They are only assigned to a level on collection - which prevents you from farming the same easy location for every colour in the game.

In addition, this new system is one step short of dehardcoding them entirely. Now only Spray Cans specifically asked for by the existence of UC_SPRAYCAN will be put in the list, and if a secondary parameter is either "Yes" or "True", it will be put at the head of the list. This could technically support custom skincolours one day, but the author of this commit doesn't care to do the last bit of work necessary to make it happen.

There's a slight extra overhead in that skincolor_t now also holds a `cache_spraycan` (renamed from `cachedcan`, which maps had previously)

Currently, there's no safeguard against grabbing it on a custom course - you'll lose the Spray Can as soon as you load a fresh game again - but  I consider that easy to fix (tomorrow) and necessary before merger, because the author of this commit does NOT want complaints on release because we forgot to protect users who keep on losing their skincolors.
2023-08-23 00:46:46 +01:00
toaster
f7635c4399 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into spraycans 2023-08-22 19:57:28 +01:00
James R
9c14fe1aeb Merge branch 'pause-graphic-sound-test' into 'master'
Don't draw PAUSE graphic in the Stereo menu

See merge request KartKrew/Kart!1407
2023-08-20 22:56:52 +00:00
toaster
ba7d319457 Make bios.pk3 consistent filename
Removes all reference to main.kart, not just the obvious ones.
2023-08-20 22:06:11 +01:00
toaster
dc695e7acf First pass at implementing Spray Can pickups
- Replaces a few D00DKart objects because the doomednum specifically replaced one of these
- Reports on load if the map has too many, or if one's assigned but the object doesn't exist
2023-08-19 22:21:20 +01:00
toaster
1d06637a38 First pass at assigning unique spraycans to level headers
Increments gamedata minor version, be aware
- M_AssignSpraycans
    - Called in M_FinaliseGameData.
    - Attaches a hardcoded set of colours to all race maps in cup order, stopping once we run out.
    - The colours are shuffled, with some "freebies" always at the head of the list.
    - Integrates partial lists pretty well.
    - In DEVELOP builds, I_Errors if it produces corrupted state.
- G_LoadGameData, G_SaveGameData
    - Save & Load is implemented for these assignments
2023-08-19 15:08:55 +01:00
James R
d06185f5a3 M_Drawer: don't draw PAUSE graphic in the Stereo menu 2023-08-19 03:45:43 -07:00
toaster
9a35a39f5d Challenges Chao Key usage: Eggman numbers to REALLY drive home that you have to hold the button, and that you can release it early 2023-08-10 00:28:18 +01:00
toaster
6015a96a84 General cleanup to Map Statistics screen
- One extra row, to match the position of the headers on other pages
- Add "time" column if Time Attack for relevant gametypes is unlocked
- Seperate row header from Lost and Found for tutorial mode maps
- Add background lines to each row to increase parsability
2023-08-10 00:28:17 +01:00
toaster
567e3863a3 GP stats: Make columns alternate in darkness, rather than gradient 2023-08-10 00:28:17 +01:00
toaster
bce9a2c146 Change the location of the "No [something!?" message to be where a header usually is 2023-08-10 00:28:17 +01:00
toaster
8d7c9dd6ce Menu titles for level headers
For the tutorials. Replaces the no longer visible subtitle, since it's roughly analagous in purpose.
2023-08-10 00:28:17 +01:00
toaster
b669f8484f Realname for Cups
Permits prefixing them like maps AND giving them spaces instead of underscores, fixing the "RECYCLE_A" issue.
2023-08-10 00:28:17 +01:00
toaster
92b8ef33f6 Imrpoved Grand Prix Statistics screen
- Show placement with position-modified monitor mini-icon
- Reworked alignment AGAIN
- Dots instead of dashes for empty spots on the GP statistics
    - Now also applies for a missing emerald/prize
- Shaded glass background behind the icons for readability
2023-08-10 00:28:17 +01:00
toaster
8b22e7f691 No entries means no entries 2023-08-10 00:28:17 +01:00
toaster
71bbe3f28a Minor aesthetic/alignment tweaks to all three implemented statistics pages while waiting for chicken to defrost 2023-08-10 00:28:17 +01:00
toaster
648a97aaf3 Grand Prix page for statistics screen
Shows windata for all unlocked difficulties, or dotted dash lines if no windata is available
2023-08-10 00:28:17 +01:00
toaster
d4049bb9a0 Saner list end handling for M_DrawStatsChars 2023-08-10 00:28:16 +01:00
toaster
f02711e297 M_DrawCupWinData
Extract a portion of M_DrawCupSelect for future Statistics usage.
2023-08-10 00:28:16 +01:00
toaster
97889f9ef2 M_DrawCharacterIconAndEngine
Abstracts previously duplicated code between Challenges and Statistics
2023-08-10 00:28:16 +01:00
toaster
9ed1471c95 Add "Characters & Emgine Classes" page to statistics
- Shows wins for every character
- Shows heatmap of which stats are your favourite (of the loaded skins)
- Adds a header to the top of all statistics pages showing you can scroll left and right
    - General spacing is adjusted to accomodate
2023-08-10 00:28:16 +01:00
toaster
52b4104f86 Fix inconsistencies with some maps-related statistics 2023-08-10 00:28:16 +01:00
toaster
49e3e6b500 Instead of calculating relevant medals for every frame, calculate once and store the result 2023-08-10 00:28:16 +01:00
toaster
efe02794d4 (re-)implement pages for the Statistics Menu
Was previously a feature of older versions of SRB2, but newer releases have had more compact statistics menus.
However, we now have wayyyyy more to track than SRB2 ever did, so this is now actually justified.

Currently there are only two pages, and the first page is empty. This will change shortly.
2023-08-10 00:28:16 +01:00
toaster
380a015e82 Increase the amount the menu background has to slide, and slightly increase the speed to compensate
Subjective, but means no corner of the image will be poking in over the fade.
2023-08-10 00:28:15 +01:00
toaster
75257fbdd2 Fix instantaneous menu background image slideout on fade wipe
If the renderdeltatics is lagged enough, perform no change - a smaller delta should be along shortly.
2023-08-10 00:28:15 +01:00
James R
feada89364 Port Sound Test (Stereo) code to new music system
Much of struct soundtest was removed, since the music
system handles its functionality now.
2023-08-06 17:31:45 -07:00
toaster
23f479f365 Intermission - DUEL mode
Show players' appearances on intermissions with less than or equal to 2 players, in port priority order, to mimic Sonic 3 Competition.

Also shows player letter and profile name in Match Race, to really drive the reference home.
2023-07-26 14:31:50 +01:00
toaster
03f9ff0847 Character Select menu: Put B, D on the right side of the PLAYER/profile name text, to avoid overlapping the player's eyes 2023-07-26 14:20:46 +01:00
toaster
40dfe494cc Fix underscore for virtual keyboard/menu typing interface
Surprised it ever worked, inexplicably was converted to a color!?
2023-07-12 09:00:30 +01:00
toaster
eacd99a815 FOCUS LOST: Force uppercase 2023-07-12 09:00:30 +01:00
toaster
c5dc430b50 V_6WIDTHSPACE no longer a pitfall for using V_DrawThinString
The bunched text behaviour is now the primary mode of operation for TINY_FONT.
2023-07-12 09:00:29 +01:00
toaster
a536f884ce V_ALLOWLOWERCASE --> V_FORCEUPPERCASE
Content of commit was originally written by Sal, but as a monolithic commit. The author of this commit is chunking it up for easier review.

Simple inversion on the face of things, but with a long tail of consequences, including 19 changed files.

Forced uppercase has been applied in a handful of locations where it was aesthetically imperative. Most menus will follow in another commit, so that that may be reverted if we change the default menu font.
2023-07-12 09:00:29 +01:00
toaster
c864bb9182 Fix icons for SECRET_MAP, SECRET_COLOR, and SECRET_SPBATTACK 2023-06-28 19:32:20 +01:00
toaster
1ec5b74892 Implement SECRET_MEMETAUNTS
Permits "Meme" player taunt voice and "Meme" follower horn options
2023-06-28 19:31:40 +01:00
toaster
4344221252 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into seeecret-colors 2023-06-28 12:48:50 +01:00
toaster
dee753d979 Admin Tools menu
Just a superpowered version of the Call Votekick menu, also just to make release cleanly
2023-06-28 00:02:09 +01:00
toaster
685e1b019f Actually pay attention to K_PlayerIDAllowedInMidVote for access to calling votes 2023-06-27 23:59:46 +01:00
toaster
b59346f637 Votekick menu
Not super polished, literally just implemented this way to make freeze
2023-06-27 23:59:01 +01:00
toaster
d8ea8c0fe1 Implement "CALL VOTE" for victimless commands on the pause menu
Currently just plays the squishy "nope" sound for "KICK PLAYER?", all others are functional
Shows whether vote is active or the cooldown is too recent (via numerical timer) as reasons for why you can't select it
2023-06-27 17:53:59 +01:00
toaster
721d5d9da9 Improve M_HandlePauseMenuGametype and M_HandleHostMenuGametype
Simplify massively by using IT_ARROWS
2023-06-27 17:45:27 +01:00