#include "scene.h" #include #include #include #include #include #include #include #include #include #include #include "../../ext.h" #include "./player/player.h" #include "./gui/battle.h" #include "./gui/dialogue.h" #include "./gui/pause.h" #include ".//battle.h" #include ".//dialogue.h" #include #include EXT_OBJECT_REGISTER_CPP(TestScene_WorldScape) void ext::TestScene_WorldScape::initialize() { ext::Scene::initialize(); this->m_name = "World"; // this->load("./scenes/world/scene.json"); uf::Serializer& metadata = this->getComponent(); uf::Asset& assetLoader = this->getComponent(); /* Grab master data */ { std::vector tables = { "Card", "Chara", "Skill", "Element", "Status", }; for ( auto& table : tables ) { uf::MasterData data; metadata["system"]["mastertable"][table] = data.load(table); } } static uf::Timer timer(false); if ( !timer.running() ) timer.start(); this->addHook( "world:Battle.Prepare", [&](const std::string& event)->std::string{ uf::Serializer json = event; uf::Entity& player = this->getController(); uf::Serializer& pMetadata = player.getComponent(); uf::Serializer payload; payload["battle"]["music"] = json["music"]; payload["battle"]["enemy"] = json[""]; payload["battle"]["enemy"]["uid"] = json["uid"]; payload["battle"]["player"] = pMetadata[""]; payload["battle"]["player"]["uid"] = player.getUid(); pMetadata["system"]["control"] = false; pMetadata["system"]["menu"] = "battle"; this->callHook("world:Battle.Start", payload); return "true"; }); this->addHook( "world:Battle.Start", [&](const std::string& event)->std::string{ if ( timer.elapsed().asDouble() < 1 ) return "false"; timer.reset(); ext::Gui* guiManager = (ext::Gui*) this->findByName("Gui Manager"); if ( !guiManager ) return "false"; uf::Serializer json = event; ext::HousamoBattle* battleManager = new ext::HousamoBattle; this->addChild(*battleManager); battleManager->initialize(); battleManager->callHook("world:Battle.Start.%UID%", json); uf::Serializer payload; return payload; }); this->addHook( "world:Battle.End", [&](const std::string& event)->std::string{ uf::Serializer json = event; ext::HousamoBattle* battleManager = (ext::HousamoBattle*) this->findByName("Battle Manager"); if ( !battleManager ) return "false"; this->removeChild(*battleManager); battleManager->destroy(); delete battleManager; return "true"; }); this->addHook( "menu:Dialogue.Start", [&](const std::string& event)->std::string{ if ( timer.elapsed().asDouble() < 1 ) return "false"; timer.reset(); ext::Gui* guiManager = (ext::Gui*) this->findByName("Gui Manager"); if ( !guiManager ) return "false"; uf::Serializer json = event; ext::DialogueManager* dialogueManager = new ext::DialogueManager; this->addChild(*dialogueManager); dialogueManager->initialize(); dialogueManager->callHook("menu:Dialogue.Start.%UID%", json); return json; }); this->addHook( "menu:Dialogue.End", [&](const std::string& event)->std::string{ uf::Serializer json = event; ext::DialogueManager* dialogueManager = (ext::DialogueManager*) this->findByName("Dialogue Manager"); if ( !dialogueManager ) return "false"; this->removeChild(*dialogueManager); dialogueManager->destroy(); delete dialogueManager; return "true"; }); } void ext::TestScene_WorldScape::tick() { ext::Scene::tick(); } void ext::TestScene_WorldScape::render() { ext::Scene::render(); }