mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-17 12:57:01 +02:00
Map downloads on join, faster mod merging, connect cards in the server browser
Map downloader - A host or dedicated server now tells joiners which Thunderstore package its map comes from (the Mods folder name plus manifest.json). - A player without the map gets a card: icon, name, author, version and description, with DOWNLOAD and CANCEL. It works with mouse, keyboard and controller. - Only packages listed as Maps in the ReSkate community are offered, and never deprecated, rejected or NSFW ones. - On yes the package is downloaded, installed into Mods and applied as a live mod, then the session loads the map. A small card on the right shows the progress, so the player can keep skating. - The player stays connected while it downloads: the host gives a player who says they are fetching the map up to 45 minutes instead of the usual load time. - When the server changes map with the player in it, the card says so. - Protocol version 47: map package on map_offer and world_state, and a "fetching the map" flag on map_request and world_ready. Joining - The pause-menu server browser shows a CONNECTING card over the page while a join is under way, and a COULDN'T CONNECT card with the reason when it does not get in. - The session and voice tabs no longer show before the player is in. - Leaving without the map (declined or cancelled download) no longer counts towards the failed-join limit, on servers and player hosts. Input - A card that asks something holds the game's input until the buttons are released. - Steam's overlay hooks XInput in front of ReSkate and answers the game itself, so a controller reached the game behind menus. ReSkate now hooks that hook as well. Mod merging - Mods are read on several threads, at launch and for live merges. A live merge runs below the game's priority. - The paid-cosmetics check reads the game's files and the mods on several threads. - A live merge reuses the paid-cosmetics verdicts it already has and reports its progress and timings. Launcher - NSFW mods and their categories are not shown in the mod browser.
This commit is contained in:
1 parent
b7936a36c6
commit
0ae0e71f0f
46 files changed
+2448
-275
No files matched your search
@@ -9,6 +9,7 @@
|
||||
#include "Engine/Game/Build/20260929/profiler_labels.h"
|
||||
#include "Engine/Game/Build/supported_build.h"
|
||||
#include "Engine/Vfs/mod_catalog.h"
|
||||
#include "Extension/Assets/map_download.h"
|
||||
#include "Extension/Boot/offline_boot.h"
|
||||
#include "Extension/HallOfMeat/hall_of_meat.h"
|
||||
#include "Extension/Skater/camera_observer.h"
|
||||
@@ -189,6 +190,34 @@ extern "C" __declspec(dllexport) BOOL WINAPI DingoSDKDebugInitialize() {
|
||||
dingosdk::multiplayer::set_native_menu_callbacks(native_callbacks);
|
||||
dingosdk::overlay::set_multiplayer_queue(queue_multiplayer_command);
|
||||
dingosdk::overlay::set_chat_feed(dingosdk::multiplayer::chat);
|
||||
// A map a session needs: hosts say which Thunderstore package theirs is from, and a
|
||||
// guest without it is offered it on a card (Extension/Assets/map_download.h).
|
||||
dingosdk::multiplayer::set_map_package_lookup(dingosdk::map_download::package_of);
|
||||
dingosdk::overlay::set_map_download_feed([]() {
|
||||
const auto view = dingosdk::map_download::view();
|
||||
using Stage = dingosdk::map_download::Stage;
|
||||
dingosdk::overlay::MapDownloadCard card;
|
||||
card.stage = view.stage == Stage::asking ? 1 : view.stage == Stage::downloading ? 2 : view.stage == Stage::installing ? 3
|
||||
: view.stage == Stage::applying ? 4 : view.stage == Stage::joining ? 5 : 0;
|
||||
card.map = view.map;
|
||||
card.package = view.package;
|
||||
card.author = view.author;
|
||||
card.version = view.version;
|
||||
card.description = view.description;
|
||||
card.step = view.step;
|
||||
card.steps = view.steps;
|
||||
card.step_name = view.step_name;
|
||||
card.server = view.server;
|
||||
card.moved = view.moved;
|
||||
card.installed = view.installed;
|
||||
card.choice = view.choice;
|
||||
card.received = view.received;
|
||||
card.total = view.total;
|
||||
card.yes_bind = view.yes_bind;
|
||||
card.no_bind = view.no_bind;
|
||||
return card;
|
||||
});
|
||||
dingosdk::overlay::set_map_download_answer(dingosdk::map_download::answer);
|
||||
dingosdk::overlay::set_hub_page_feed(dingosdk::multiplayer::native_menu_page);
|
||||
dingosdk::overlay::set_hub_callbacks(native_callbacks);
|
||||
dingosdk::overlay::set_ui_sound(dingosdk::multiplayer::queue_ui_sound);
|
||||
|
||||
Reference in new issue
Block a user