// Loads a window and binds the event handler for it. bool EventManager::LoadWindow(const Rocket::Core::String& window_name) { // Set the event handler for the new screen, if one has been registered. EventHandler* old_event_handler = event_handler; EventHandlerMap::iterator iterator = event_handlers.find(window_name); if (iterator != event_handlers.end()) event_handler = (*iterator).second; else event_handler = NULL; // Attempt to load the referenced RML document. char path[1024]; GetMmoResourcePath(path, 1024, (window_name + ".rml").CString()); Rocket::Core::ElementDocument* document = gContext->LoadDocument(path); if (document == NULL) { event_handler = old_event_handler; return false; } // Set the element's title on the title; IDd 'title' in the RML. Rocket::Core::Element* title = document->GetElementById("title"); if (title != NULL) title->SetInnerRML(document->GetTitle()); document->Focus(); document->Show(); // Remove the caller's reference. document->RemoveReference(); return true; }
// Loads a window and binds the event handler for it. Rocket::Core::ElementDocument* EventManager::LoadWindow(const Rocket::Core::String& window_name) { // Set the event handler for the new screen, if one has been registered. EventHandler* old_event_handler = event_handler; EventHandlerMap::iterator iterator = event_handlers.find(window_name); if (iterator != event_handlers.end()) { event_handler = iterator->second; //Rocket::Core::Log::Message(Rocket::Core::Log::LT_INFO, "%s", window_name.CString()); } else event_handler = NULL; // Attempt to load the referenced RML document. Rocket::Core::String document_path = Rocket::Core::String("data/") + window_name + Rocket::Core::String(".rml"); Rocket::Core::ElementDocument* document = Context->LoadDocument(document_path.CString()); if (document == nullptr) { event_handler = old_event_handler; return nullptr; } document->SetId(window_name); // Set the element's title on the title; IDd 'title' in the RML. Rocket::Core::Element* title = document->GetElementById("title"); if (title != NULL) title->SetInnerRML(document->GetTitle()); document->Focus(); document->Show(); // Remove the caller's reference. document->RemoveReference(); return document; }
int main(int ROCKET_UNUSED_PARAMETER(argc), char** ROCKET_UNUSED_PARAMETER(argv)) #endif { #ifdef ROCKET_PLATFORM_WIN32 ROCKET_UNUSED(instance_handle); ROCKET_UNUSED(previous_instance_handle); ROCKET_UNUSED(command_line); ROCKET_UNUSED(command_show); #else ROCKET_UNUSED(argc); ROCKET_UNUSED(argv); #endif #ifdef ROCKET_PLATFORM_LINUX #define APP_PATH "../Samples/tutorial/datagrid_tree/" #else #define APP_PATH "../../Samples/tutorial/datagrid_tree/" #endif #ifdef ROCKET_PLATFORM_WIN32 DoAllocConsole(); #endif int window_width = 1024; int window_height = 768; ShellRenderInterfaceOpenGL opengl_renderer; shell_renderer = &opengl_renderer; // Generic OS initialisation, creates a window and attaches OpenGL. if (!Shell::Initialise(APP_PATH) || !Shell::OpenWindow("Datagrid Tree Tutorial", shell_renderer, window_width, window_height, true)) { Shell::Shutdown(); return -1; } // Rocket initialisation. Rocket::Core::SetRenderInterface(&opengl_renderer); opengl_renderer.SetViewport(window_width, window_height); ShellSystemInterface system_interface; Rocket::Core::SetSystemInterface(&system_interface); Rocket::Core::Initialise(); Rocket::Controls::Initialise(); // Create the main Rocket context and set it on the shell's input layer. context = Rocket::Core::CreateContext("main", Rocket::Core::Vector2i(window_width, window_height)); if (context == NULL) { Rocket::Core::Shutdown(); Shell::Shutdown(); return -1; } Rocket::Debugger::Initialise(context); Input::SetContext(context); shell_renderer->SetContext(context); Shell::LoadFonts("../../assets/"); // Load the defender decorator. Rocket::Core::DecoratorInstancer* decorator_instancer = Rocket::Core::Factory::RegisterDecoratorInstancer("defender", new DecoratorInstancerDefender()); if (decorator_instancer != NULL) decorator_instancer->RemoveReference(); // Add the ship formatter. HighScoresShipFormatter ship_formatter; // Construct the high scores. HighScores::Initialise(); // Load and show the tutorial document. Rocket::Core::ElementDocument* document = context->LoadDocument("data/tutorial.rml"); document->GetElementById("title")->SetInnerRML(document->GetTitle()); if (document != NULL) { document->Show(); document->RemoveReference(); } Shell::EventLoop(GameLoop); // Shut down the high scores. HighScores::Shutdown(); // Shutdown Rocket. context->RemoveReference(); Rocket::Core::Shutdown(); Shell::CloseWindow(); Shell::Shutdown(); return 0; }