From 9b07ad02d883625e340b900a493046530fd2c95c Mon Sep 17 00:00:00 2001 From: Joseph DiMaria Date: Sat, 31 Jan 2026 01:31:23 -0800 Subject: [PATCH] Load songs from JSON --- src/engine/prefabs/managers.h | 5 +++++ src/main.cpp | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/src/engine/prefabs/managers.h b/src/engine/prefabs/managers.h index a35f01b..0625b18 100644 --- a/src/engine/prefabs/managers.h +++ b/src/engine/prefabs/managers.h @@ -243,6 +243,7 @@ public: */ 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 (documents.find(name) != documents.end()) { @@ -311,6 +312,8 @@ public: std::unordered_map songs; JsonManager* json_manager; + SongManager() = default; + SongManager(JsonManager* json_mgr) : json_manager(json_mgr) {} /** @@ -322,6 +325,7 @@ public: */ 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 (songs.find(name) != songs.end()) { @@ -336,6 +340,7 @@ public: // Store the song songs[name] = song; + return songs[name]; } diff --git a/src/main.cpp b/src/main.cpp index 33ec931..36af4c9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,6 @@ #include "samples/ghhb_game.h" #include "samples/title_screen.h" +#include "entities/song.h" // Emscripten is used for web builds. #ifdef __EMSCRIPTEN__ @@ -19,6 +20,8 @@ int main(int argc, char** argv) { game.add_manager(1280, 720, "Guitar Hero But Better"); auto font_manager = game.add_manager(); + auto json_manager = game.add_manager(); + auto song_manager = game.add_manager(json_manager); game.init(); // Game::init initializes all managers, so we can load fonts now. @@ -29,6 +32,10 @@ int main(int argc, char** argv) game.add_scene("title"); game.add_scene("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__ emscripten_set_main_loop(update, 0, true); #else