Files
ReSkate/Extension/Throwdowns/native_throwdowns.h
T
2026-10-02 14:40:41 -05:00

29 lines
1.7 KiB
C++

#pragma once
#include <cstdint>
namespace dingosdk::multiplayer {
// Offline stand-ins for the answers throwdowns normally get from the backend
// (throwdowns_v1 mode catalogue) and the online roster (host player lookup).
void initialize_native_throwdowns(std::uintptr_t base) noexcept;
// Game thread, every client tick: adds the throwdown text retail never shipped (the
// S.K.A.T.E. title showed as ID_ACTIVITY_SKATE_TITLE, Spot Battle's details description as
// ID_ACTIVITY_SPOTBATTLE_DESC) to the game's own string-override store, the one the
// backend's client_strings_v1 fills, once the string database is loaded. Rechecked every
// 2 s, since a language change or a backend refresh clears that store.
void apply_throwdown_strings(std::uintptr_t base) noexcept;
// True while a client ThrowdownRegistration graph is asking IsOnline (0) or
// IsSessionReady (1) in hosted offline play. Every other graph stays native.
bool native_throwdown_ready(unsigned predicate) noexcept;
// Call after an expression returns: delivers a parameter request that the
// absent throwdowns_v1 service left pending for that expression.
void complete_native_throwdown_parameters(std::uintptr_t vm) noexcept;
// Native player id of the hosted offline server's only real player, or zero.
std::uint32_t local_native_player_id() noexcept;
// True from the moment the local player creates or joins a throwdown until it
// ends, is left or destroyed. Retail mirrors this onto UIPlayerInfo, where the
// throwdown Quit action reads it; offline the SDK owns that record.
bool local_throwdown_active() noexcept;
// True while that throwdown is the local player's own (it created it).
bool local_throwdown_host() noexcept;
}