mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-17 16:17:06 +02:00
Sources - Local Files: add a folder of music from the setup page (MP3, M4A, AAC, Ogg, FLAC, WAV; up to 200 songs a folder, 12 folders). Names and covers come from the files' tags. Each folder is a tile in its own row. - Online Radio: find stations by name (radio-browser.info) or add a stream's address (MP3, AAC, .pls, .m3u; no HLS). Each station is a tile in its own row; the track name follows what the station sends. Up to 24. - Both are decoded by the library built into the DLL (SpotifyHelper), which now plays files and HTTP streams as well as a program's output, reads tags and embedded pictures, and accepts MPEG-2 ADTS from AAC stations. Sound - Five-band equaliser (60 Hz, 250 Hz, 1 kHz, 4 kHz, 12 kHz) and loudness levelling, applied to every source on its way into the game. - Loudness, the speakers option, the equaliser and levelling are now kept in music-settings.json between sessions. Setup page - Remade in the mod's own colours and type, with numbered steps per source. - Queue pinned to the right: now playing, the playlist's songs with covers, find, and press to jump. Spotify's own queue shows once signed in. - Cards for Local files and Online radio; equaliser and levelling under Sound. In game - MUSIC page in the menu: player and queue, sound settings, source status and a button for the setup page. - "Loading song..." notice in the corner for songs that take a moment, with a switch to hide it. Presses made while a song is loading no longer restart it. - The Spotify row is hidden when Spotify is not in use. - Console: "spotify ..." is now "music ..." (music, music setup, music gain, music through, music spotify client|login|logout). Logs - The music sources' working lines (traces, per-song and per-bind lines, librespot's own) are debug only; stack captures are skipped unless debug logging is on. Grind exits: the per-pop line is debug only too. - A "Pace:" line when the game takes the sound faster or slower than real time, to find why music sounds fast after tabbing back in. Chat filter - A run of digits is a number, not a word spelled with look-alikes: a race time such as 2:55.0 is no longer masked.
21 lines
1.2 KiB
C++
21 lines
1.2 KiB
C++
#pragma once
|
|
#include <cstdint>
|
|
#include <string>
|
|
|
|
// Lua in the game is Lua and nothing else, whoever wrote the script: a loose file in scripts/,
|
|
// a custom script, or one of the game's own. The game ships stock Lua 5.2 with every library
|
|
// open, so a script could otherwise load a DLL or start a program. These are switched off in
|
|
// the game's own Lua functions, before any Lua state exists, so no script runs ahead of it and
|
|
// none can keep a copy of the working function:
|
|
// * loading a DLL: package.loadlib, and require through the two C searchers;
|
|
// * starting a program: os.execute, io.popen;
|
|
// * writing, deleting or renaming a file on the player's disk: io.open, io.output, os.remove,
|
|
// os.rename (a script that can write a file can leave a program where Windows starts it);
|
|
// * loading precompiled chunks: bytecode is not checked by Lua and is a known way to run
|
|
// native code. Every script the game ships is text.
|
|
// The game's scripts use none of them: they read through the engine's own vfs and dofile.
|
|
// Each attempt is refused the way Lua reports a failure, and logged.
|
|
namespace dingosdk {
|
|
bool start_lua_native_block(std::uintptr_t base, std::string& error);
|
|
}
|