mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-22 06:08:07 +02:00
General APIs from pull request 269 (the player's own item tabs and outfit layers), whose tabs,
panels and prompts are now a plugin's (contrib/plugins/item-tabs, kept on this machine):
- reskate.menu.grid_show(keys): a plugin's list in the item grid that has the focus, drawn from
every grid of the screen; reskate.menu.grid_mark(keys): the game's check on tiles. menu.grid()
also says whether a list shows, whether it is empty, and where the grid's own prompts end.
- reskate.outfit.on_top(items) and on_top_state(): items worn on top of the outfit in the slots it
leaves empty, the item given the slot's category, a slot tried and left if the game reports a
failed load (ReSkate.layer_slots.txt remembers which load where); paid store items refused.
Part of the shared outfit service, with reskate.outfit.set.
- reskate.input.game_keys(keys): presses the game does not see, by any way it reads the keyboard;
"Delete" is a key name.
- d:game_image draws the customization menu's 17 category icons ("cas_tops", ...).
dingosdk_plugin_tests skips the test of a contrib plugin that is not on this machine.
19 lines
1022 B
C++
19 lines
1022 B
C++
#pragma once
|
|
#include <cstdint>
|
|
|
|
// A load that failed could crash the game instead: to say why, the game describes each part of
|
|
// the load's error in turn, and the list can hold parts that were never set
|
|
// (Engine/Game/Build/<build>/load_errors.h). The guard looks at the list first and empties every
|
|
// part that is not one of the game's own objects, so those read "no error" as an empty part
|
|
// does; the description itself runs under an exception handler as well. The failed load is then
|
|
// the game's to deal with, as it meant to. What the game wrote is put in the log, so a mod
|
|
// whose content does not load can be found.
|
|
namespace dingosdk::load_error_guard {
|
|
// Checks this build's function and hooks it; once. False when the build differs (no guard).
|
|
bool install(std::uintptr_t base) noexcept;
|
|
// How many parts were emptied since the game started.
|
|
std::uint64_t emptied() noexcept;
|
|
// How many failed loads the game has described since it started (0 without the guard).
|
|
std::uint64_t described() noexcept;
|
|
}
|