Files
openroller/psp/include/SongMenu.hpp
T
tsuki 831d96e562 Initial public source release
Split reusable rendering and format support into vectorail-core and vectorail-gc.
2026-08-02 17:05:27 +02:00

36 lines
1.2 KiB
C++

#pragma once
#include "openroller/psp/SongCatalog.hpp"
#include <cstddef>
#include <cstdint>
namespace openroller::psp {
struct SongMenu {
void* catalogStorage = nullptr;
std::size_t catalogSize = 0;
const SongCatalogHeader* header = nullptr;
const SongCatalogRecord* songs = nullptr;
int selection = 0;
int difficulty = 0;
bool difficultyMode = false;
void* jacketStorage = nullptr;
std::size_t jacketSize = 0;
const std::uint16_t* jacketPixels = nullptr;
std::uint16_t jacketWidth = 0;
std::uint16_t jacketHeight = 0;
char rootPath[256]{};
};
bool loadSongMenu(const char* catalogPath, SongMenu* menu, char* error, std::size_t errorCapacity);
void unloadSongMenu(SongMenu* menu);
bool moveSongSelection(SongMenu* menu, int delta);
bool moveDifficultySelection(SongMenu* menu, int delta);
const SongCatalogRecord* selectedSong(const SongMenu& menu);
bool selectedSongPath(const SongMenu& menu, char* output, std::size_t capacity);
bool selectedAudioPath(const SongMenu& menu, char* output, std::size_t capacity);
bool selectedShotAudioPath(const SongMenu& menu, char* output, std::size_t capacity);
} // namespace openroller::psp