diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 614658691..c09e4133a 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -319,12 +319,6 @@ void OMW::Engine::go() mGuiManager = new OEngine::GUI::MyGUIManager(mOgre.getWindow(), mOgre.getScene(), false, mCfgMgr.getLogPath().string() + std::string("/")); - MyGUI::FactoryManager::getInstance().registerFactory("Widget"); - MyGUI::FactoryManager::getInstance().registerFactory("Widget"); - MyGUI::FactoryManager::getInstance().registerFactory("Widget"); - MyGUI::FactoryManager::getInstance().registerFactory("Widget"); - MyGUI::FactoryManager::getInstance().registerFactory("Widget"); - // Create window manager - this manages all the MW-specific GUI windows MWScript::registerExtensions (mExtensions); @@ -383,29 +377,19 @@ void OMW::Engine::go() mOgre.getRoot()->addFrameListener (this); // Play some good 'ol tunes - mEnvironment.mSoundManager->startRandomTitle(); + mEnvironment.mSoundManager->startRandomTitle(); // scripts if (mCompileAll) { - typedef ESMS::ScriptListT::MapType Container; + std::pair result = mScriptManager->compileAll(); - Container scripts = mEnvironment.mWorld->getStore().scripts.list; - - int count = 0; - int success = 0; - - for (Container::const_iterator iter (scripts.begin()); iter!=scripts.end(); ++iter, ++count) - if (mScriptManager->compile (iter->first)) - ++success; - - if (count) + if (result.first) std::cout - << "compiled " << success << " of " << count << " scripts (" - << 100*static_cast (success)/count + << "compiled " << result.second << " of " << result.first << " scripts (" + << 100*static_cast (result.second)/result.first << "%)" << std::endl; - } // Start the main rendering loop diff --git a/apps/openmw/mwgui/window_manager.cpp b/apps/openmw/mwgui/window_manager.cpp index 84e45859f..095d347e7 100644 --- a/apps/openmw/mwgui/window_manager.cpp +++ b/apps/openmw/mwgui/window_manager.cpp @@ -77,6 +77,12 @@ WindowManager::WindowManager(MyGUI::Gui *_gui, MWWorld::Environment& environment playerSkillValues.insert(std::make_pair(ESM::Skill::skillIds[i], MWMechanics::Stat())); } + MyGUI::FactoryManager::getInstance().registerFactory("Widget"); + MyGUI::FactoryManager::getInstance().registerFactory("Widget"); + MyGUI::FactoryManager::getInstance().registerFactory("Widget"); + MyGUI::FactoryManager::getInstance().registerFactory("Widget"); + MyGUI::FactoryManager::getInstance().registerFactory("Widget"); + // Set up visibility updateVisible(); } @@ -329,7 +335,7 @@ void WindowManager::updateVisible() dialogueWindow->open(); return; } - + if(mode == GM_InterMessageBox) { if(!mMessageBoxManager->isInteractiveMessageBox()) { diff --git a/apps/openmw/mwscript/scriptmanager.cpp b/apps/openmw/mwscript/scriptmanager.cpp index 07fa93454..5fcfcc605 100644 --- a/apps/openmw/mwscript/scriptmanager.cpp +++ b/apps/openmw/mwscript/scriptmanager.cpp @@ -116,4 +116,20 @@ namespace MWScript iter->second.clear(); // don't execute again. } } + + std::pair ScriptManager::compileAll() + { + typedef ESMS::ScriptListT::MapType Container; + + const Container& scripts = mStore.scripts.list; + + int count = 0; + int success = 0; + + for (Container::const_iterator iter (scripts.begin()); iter!=scripts.end(); ++iter, ++count) + if (compile (iter->first)) + ++success; + + return std::make_pair (count, success); + } } diff --git a/apps/openmw/mwscript/scriptmanager.hpp b/apps/openmw/mwscript/scriptmanager.hpp index eab9bdcc0..74511f456 100644 --- a/apps/openmw/mwscript/scriptmanager.hpp +++ b/apps/openmw/mwscript/scriptmanager.hpp @@ -52,6 +52,10 @@ namespace MWScript bool compile (const std::string& name); ///< Compile script with the given namen /// \return Success? + + std::pair compileAll(); + ///< Compile all scripts + /// \return count, success }; };