mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-17 22:07:05 +02:00
The Multiplayer and Custom Stuff pages of the game's pause menu were built from the game's own menu widgets: a button, a text box and a line of text, which cannot make a list with columns. The game now keeps only the frame around each page (top bar, title, Back prompt) and ReSkate draws everything in it, tabs included. The native page is one empty body. Multiplayer - Server browser: a list with name, map and skaters columns that sort, search, filters (all, servers, lobbies, friends, hide full, my map), and a panel for the session pointed at. Pressing a row joins it; the row says JOIN while pointed at. Join by code is in the panel, and its own tab is gone. - Host lobby, as before. - Current session (only in one): who is here, leave, map, join code, party. - Voice chat (only in a session). - Session settings (only for a lobby's host or a server's admin). They are sent as explicit values, which a dedicated server needs. Custom Stuff - Official maps and Custom maps: pressing a map loads it. - World: traffic, pedestrians, time of day. - Parks: a card for each lot with its style, layout and load. - Player: noclip, no bail, Hall of Meat, board wear, the camera views, flight speed and the boosts. - Online: player and nametag distances, nametags, chat, chat bubbles, Discord status, and showing your tag and items. - Visuals: camera effects, challenges, shuffle playlists. - Binds: record or clear the button for each action. - The player card name is no longer on the page (cardname in the console still sets it). Input: the game keeps the mouse and controller while its menu is up, so the pages only watch them. They have their own focus, moved with the D-pad or arrow keys and pressed with A or Enter, with LT/RT or Z/C for tabs; lists remember the row the focus left. Typing in a text box or recording a bind takes the keyboard and controller for that long, as chat does. Nothing is taken while the game is not the window in front, and the overlay's own menu draws on top. Layout follows the game's menu at any window shape: scaled to fit whole, 192 units clear at the sides, centred past 4704 units wide. Sounds: the pages raise the game's own UI one-shot event for moving the focus, pressing and changing tab.
18 lines
925 B
C++
18 lines
925 B
C++
#pragma once
|
|
#include <cstdint>
|
|
|
|
// The game's own menu sounds, for the pages ReSkate draws in its pause menu. The game plays
|
|
// them through its UI audio manager, which listens for one event
|
|
// (Audio/UI/Manager/Events/DGO_UI_PlayOneShot_Event) carrying which sound
|
|
// (Audio/_Systems/EnumTypeInfoAssets/DGO_Audio_UI_OneShot_Enum). This raises that event the
|
|
// way the game's own code raises events, so the sounds are the game's, at the player's own
|
|
// volume settings.
|
|
namespace dingosdk::multiplayer {
|
|
// Values of the game's enum.
|
|
enum class UiSound : std::uint32_t { cancel = 0, navigate = 3, toggle = 5, select = 7, tab = 56 };
|
|
// Any thread: the sound is played at the next client tick (the newest asked for wins).
|
|
void queue_ui_sound(std::uint32_t sound) noexcept;
|
|
// Client thread, each tick while a world is up.
|
|
void tick_ui_sounds(std::uintptr_t base, bool loading) noexcept;
|
|
} // namespace dingosdk::multiplayer
|