mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-25 07:56:37 +00:00 
			
		
		
		
	factored out two function from OMW::Engine::go
The initialization code inside Engine::go is now in two function it calls prior to running the main loop.
This commit is contained in:
		
							parent
							
								
									274ff530dc
								
							
						
					
					
						commit
						d469415e59
					
				
					 2 changed files with 42 additions and 19 deletions
				
			
		|  | @ -240,18 +240,9 @@ void OMW::Engine::setNewGame(bool newGame) | ||||||
|     mNewGame = newGame; |     mNewGame = newGame; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Initialise and enter main loop.
 | std::string OMW::Engine::loadSettings (Settings::Manager & settings) | ||||||
| 
 |  | ||||||
| void OMW::Engine::go() |  | ||||||
| { | { | ||||||
|     assert (!mCellName.empty()); |  | ||||||
|     assert (!mMaster.empty()); |  | ||||||
|     assert (!mOgre); |  | ||||||
| 
 |  | ||||||
|     mOgre = new OEngine::Render::OgreRenderer; |  | ||||||
| 
 |  | ||||||
|     // Create the settings manager and load default settings file
 |     // Create the settings manager and load default settings file
 | ||||||
|     Settings::Manager settings; |  | ||||||
|     const std::string localdefault = mCfgMgr.getLocalPath().string() + "/settings-default.cfg"; |     const std::string localdefault = mCfgMgr.getLocalPath().string() + "/settings-default.cfg"; | ||||||
|     const std::string globaldefault = mCfgMgr.getGlobalPath().string() + "/settings-default.cfg"; |     const std::string globaldefault = mCfgMgr.getGlobalPath().string() + "/settings-default.cfg"; | ||||||
| 
 | 
 | ||||||
|  | @ -272,10 +263,6 @@ void OMW::Engine::go() | ||||||
|     else if (boost::filesystem::exists(globaldefault)) |     else if (boost::filesystem::exists(globaldefault)) | ||||||
|         settings.loadUser(globaldefault); |         settings.loadUser(globaldefault); | ||||||
| 
 | 
 | ||||||
|     // Get the path for the keybinder xml file
 |  | ||||||
|     std::string keybinderUser = (mCfgMgr.getUserPath() / "input.xml").string(); |  | ||||||
|     bool keybinderUserExists = boost::filesystem::exists(keybinderUser); |  | ||||||
| 
 |  | ||||||
|     mFpsLevel = settings.getInt("fps", "HUD"); |     mFpsLevel = settings.getInt("fps", "HUD"); | ||||||
| 
 | 
 | ||||||
|     // load nif overrides
 |     // load nif overrides
 | ||||||
|  | @ -285,6 +272,11 @@ void OMW::Engine::go() | ||||||
|     else if (boost::filesystem::exists(mCfgMgr.getGlobalPath().string() + "/transparency-overrides.cfg")) |     else if (boost::filesystem::exists(mCfgMgr.getGlobalPath().string() + "/transparency-overrides.cfg")) | ||||||
|         nifOverrides.loadTransparencyOverrides(mCfgMgr.getGlobalPath().string() + "/transparency-overrides.cfg"); |         nifOverrides.loadTransparencyOverrides(mCfgMgr.getGlobalPath().string() + "/transparency-overrides.cfg"); | ||||||
| 
 | 
 | ||||||
|  |     return settingspath; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void OMW::Engine::prepareEngine (Settings::Manager & settings) | ||||||
|  | { | ||||||
|     std::string renderSystem = settings.getString("render system", "Video"); |     std::string renderSystem = settings.getString("render system", "Video"); | ||||||
|     if (renderSystem == "") |     if (renderSystem == "") | ||||||
|     { |     { | ||||||
|  | @ -294,6 +286,9 @@ void OMW::Engine::go() | ||||||
|         renderSystem = "OpenGL Rendering Subsystem"; |         renderSystem = "OpenGL Rendering Subsystem"; | ||||||
| #endif | #endif | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     mOgre = new OEngine::Render::OgreRenderer; | ||||||
|  |      | ||||||
|     mOgre->configure( |     mOgre->configure( | ||||||
|         mCfgMgr.getLogPath().string(), |         mCfgMgr.getLogPath().string(), | ||||||
|         renderSystem, |         renderSystem, | ||||||
|  | @ -365,6 +360,11 @@ void OMW::Engine::go() | ||||||
|     mEnvironment.setDialogueManager (new MWDialogue::DialogueManager (mExtensions, mVerboseScripts, mTranslationDataStorage)); |     mEnvironment.setDialogueManager (new MWDialogue::DialogueManager (mExtensions, mVerboseScripts, mTranslationDataStorage)); | ||||||
| 
 | 
 | ||||||
|     // Sets up the input system
 |     // Sets up the input system
 | ||||||
|  | 
 | ||||||
|  |     // Get the path for the keybinder xml file
 | ||||||
|  |     std::string keybinderUser = (mCfgMgr.getUserPath() / "input.xml").string(); | ||||||
|  |     bool keybinderUserExists = boost::filesystem::exists(keybinderUser); | ||||||
|  | 
 | ||||||
|     mEnvironment.setInputManager (new MWInput::InputManager (*mOgre, |     mEnvironment.setInputManager (new MWInput::InputManager (*mOgre, | ||||||
|         MWBase::Environment::get().getWorld()->getPlayer(), |         MWBase::Environment::get().getWorld()->getPlayer(), | ||||||
|          *MWBase::Environment::get().getWindowManager(), mDebug, *this, keybinderUser, keybinderUserExists)); |          *MWBase::Environment::get().getWindowManager(), mDebug, *this, keybinderUser, keybinderUserExists)); | ||||||
|  | @ -388,13 +388,8 @@ void OMW::Engine::go() | ||||||
|         MWBase::Environment::get().getWorld()->changeToInteriorCell (mCellName, pos); |         MWBase::Environment::get().getWorld()->changeToInteriorCell (mCellName, pos); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     std::cout << "\nPress Q/ESC or close window to exit.\n"; |  | ||||||
| 
 |  | ||||||
|     mOgre->getRoot()->addFrameListener (this); |     mOgre->getRoot()->addFrameListener (this); | ||||||
| 
 | 
 | ||||||
|     // Play some good 'ol tunes
 |  | ||||||
|     MWBase::Environment::get().getSoundManager()->playPlaylist(std::string("Explore")); |  | ||||||
| 
 |  | ||||||
|     // scripts
 |     // scripts
 | ||||||
|     if (mCompileAll) |     if (mCompileAll) | ||||||
|     { |     { | ||||||
|  | @ -407,10 +402,31 @@ void OMW::Engine::go() | ||||||
|                 << "%)" |                 << "%)" | ||||||
|                 << std::endl; |                 << std::endl; | ||||||
|     } |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Initialise and enter main loop.
 | ||||||
|  | 
 | ||||||
|  | void OMW::Engine::go() | ||||||
|  | { | ||||||
|  |     assert (!mCellName.empty()); | ||||||
|  |     assert (!mMaster.empty()); | ||||||
|  |     assert (!mOgre); | ||||||
|  | 
 | ||||||
|  |     Settings::Manager settings; | ||||||
|  | 	std::string settingspath; | ||||||
|  | 
 | ||||||
|  |     settingspath = loadSettings (settings); | ||||||
|  | 
 | ||||||
|  |     prepareEngine (settings); | ||||||
|  | 
 | ||||||
|  |     // Play some good 'ol tunes
 | ||||||
|  |     MWBase::Environment::get().getSoundManager()->playPlaylist(std::string("Explore")); | ||||||
| 
 | 
 | ||||||
|     if (!mStartupScript.empty()) |     if (!mStartupScript.empty()) | ||||||
|         MWBase::Environment::get().getWindowManager()->executeInConsole (mStartupScript); |         MWBase::Environment::get().getWindowManager()->executeInConsole (mStartupScript); | ||||||
| 
 | 
 | ||||||
|  |     std::cout << "\nPress Q/ESC or close window to exit.\n"; | ||||||
|  | 
 | ||||||
|     // Start the main rendering loop
 |     // Start the main rendering loop
 | ||||||
|     mOgre->start(); |     mOgre->start(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -6,6 +6,7 @@ | ||||||
| #include <components/compiler/extensions.hpp> | #include <components/compiler/extensions.hpp> | ||||||
| #include <components/files/collections.hpp> | #include <components/files/collections.hpp> | ||||||
| #include <components/translation/translation.hpp> | #include <components/translation/translation.hpp> | ||||||
|  | #include <components/settings/settings.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mwbase/environment.hpp" | #include "mwbase/environment.hpp" | ||||||
| 
 | 
 | ||||||
|  | @ -103,6 +104,12 @@ namespace OMW | ||||||
| 
 | 
 | ||||||
|             virtual bool frameRenderingQueued (const Ogre::FrameEvent& evt); |             virtual bool frameRenderingQueued (const Ogre::FrameEvent& evt); | ||||||
| 
 | 
 | ||||||
|  |             /// Load settings from various files, returns the path to the user settings file
 | ||||||
|  |             std::string loadSettings (Settings::Manager & settings); | ||||||
|  | 
 | ||||||
|  |             /// Prepare engine for game play
 | ||||||
|  |             void prepareEngine (Settings::Manager & settings); | ||||||
|  | 
 | ||||||
|         public: |         public: | ||||||
|             Engine(Files::ConfigurationManager& configurationManager); |             Engine(Files::ConfigurationManager& configurationManager); | ||||||
|             virtual ~Engine(); |             virtual ~Engine(); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue