Files
AyeZeeBB 89a97caed7 Plugins: an item grid's own list and marks, items worn on top, keys kept from the game, the menu's category icons
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.
2026-10-21 19:18:01 -05:00

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;
}