Load songs from JSON
This commit is contained in:
parent
368be1dc7f
commit
9b07ad02d8
@ -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];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user