36 lines
1.2 KiB
C++
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
|