Load songs from JSON

This commit is contained in:
Joseph DiMaria 2026-01-31 01:31:23 -08:00
parent 368be1dc7f
commit 9b07ad02d8
2 changed files with 12 additions and 0 deletions

View File

@ -243,6 +243,7 @@ public:
*/ */
rapidjson::Document& load_json(const std::string& name, const std::string& filename) rapidjson::Document& load_json(const std::string& name, const std::string& filename)
{ {
printf("load_json: %s\n", filename.c_str());
// If already loaded, return existing document // If already loaded, return existing document
if (documents.find(name) != documents.end()) if (documents.find(name) != documents.end())
{ {
@ -311,6 +312,8 @@ public:
std::unordered_map<std::string, Song> songs; std::unordered_map<std::string, Song> songs;
JsonManager* json_manager; JsonManager* json_manager;
SongManager() = default;
SongManager(JsonManager* json_mgr) : json_manager(json_mgr) {} SongManager(JsonManager* json_mgr) : json_manager(json_mgr) {}
/** /**
@ -322,6 +325,7 @@ public:
*/ */
Song& load_song(const std::string& name, const std::string& filename) Song& load_song(const std::string& name, const std::string& filename)
{ {
printf("load_song %s\n", name.c_str());
// If already loaded, return existing song // If already loaded, return existing song
if (songs.find(name) != songs.end()) if (songs.find(name) != songs.end())
{ {
@ -336,6 +340,7 @@ public:
// Store the song // Store the song
songs[name] = song; songs[name] = song;
return songs[name]; return songs[name];
} }

View File

@ -1,5 +1,6 @@
#include "samples/ghhb_game.h" #include "samples/ghhb_game.h"
#include "samples/title_screen.h" #include "samples/title_screen.h"
#include "entities/song.h"
// Emscripten is used for web builds. // Emscripten is used for web builds.
#ifdef __EMSCRIPTEN__ #ifdef __EMSCRIPTEN__
@ -19,6 +20,8 @@ int main(int argc, char** argv)
{ {
game.add_manager<WindowManager>(1280, 720, "Guitar Hero But Better"); game.add_manager<WindowManager>(1280, 720, "Guitar Hero But Better");
auto font_manager = game.add_manager<FontManager>(); auto font_manager = game.add_manager<FontManager>();
auto json_manager = game.add_manager<JsonManager>();
auto song_manager = game.add_manager<SongManager>(json_manager);
game.init(); game.init();
// Game::init initializes all managers, so we can load fonts now. // Game::init initializes all managers, so we can load fonts now.
@ -29,6 +32,10 @@ int main(int argc, char** argv)
game.add_scene<TitleScreen>("title"); game.add_scene<TitleScreen>("title");
game.add_scene<GHHBScene>("ghhb"); game.add_scene<GHHBScene>("ghhb");
Song& song = song_manager->load_song("tetris", "assets/songs/json/tetris.json");
printf("Song name: %s\n", song.header.name.c_str());
#ifdef __EMSCRIPTEN__ #ifdef __EMSCRIPTEN__
emscripten_set_main_loop(update, 0, true); emscripten_set_main_loop(update, 0, true);
#else #else