mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-03-14 01:19:59 +00:00
Issue #352: added --script-run switch
This commit is contained in:
parent
23f8595b87
commit
fd6c155118
@ -390,6 +390,9 @@ void OMW::Engine::go()
|
||||
<< std::endl;
|
||||
}
|
||||
|
||||
if (!mStartupScript.empty())
|
||||
MWBase::Environment::get().getWindowManager()->executeInConsole (mStartupScript);
|
||||
|
||||
// Start the main rendering loop
|
||||
mOgre->start();
|
||||
|
||||
@ -497,3 +500,8 @@ void OMW::Engine::setScriptConsoleMode (bool enabled)
|
||||
{
|
||||
mScriptConsoleMode = enabled;
|
||||
}
|
||||
|
||||
void OMW::Engine::setStartupScript (const std::string& path)
|
||||
{
|
||||
mStartupScript = path;
|
||||
}
|
||||
|
@ -74,6 +74,7 @@ namespace OMW
|
||||
std::string mFocusName;
|
||||
std::map<std::string,std::string> mFallbackMap;
|
||||
bool mScriptConsoleMode;
|
||||
std::string mStartupScript;
|
||||
|
||||
Compiler::Extensions mExtensions;
|
||||
Compiler::Context *mScriptContext;
|
||||
@ -162,6 +163,9 @@ namespace OMW
|
||||
/// Enable console-only script functionality
|
||||
void setScriptConsoleMode (bool enabled);
|
||||
|
||||
/// Set path for a script that is run on startup in the console.
|
||||
void setStartupScript (const std::string& path);
|
||||
|
||||
private:
|
||||
Files::ConfigurationManager& mCfgMgr;
|
||||
};
|
||||
|
@ -130,6 +130,11 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat
|
||||
("script-console", bpo::value<bool>()->implicit_value(true)
|
||||
->default_value(false), "enable console-only script functionality")
|
||||
|
||||
("script-run", bpo::value<std::string>()->default_value(""),
|
||||
"set a file that is execute in the console on startup\n\n"
|
||||
"Note: The file contains a list of script lines, but not a complete scripts. "
|
||||
"That means no begin/end and no variable declarations.")
|
||||
|
||||
("new-game", bpo::value<bool>()->implicit_value(true)
|
||||
->default_value(false), "activate char gen/new game mechanics")
|
||||
|
||||
@ -253,6 +258,7 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat
|
||||
engine.setAnimationVerbose(variables["anim-verbose"].as<bool>());
|
||||
engine.setFallbackValues(variables["fallback"].as<FallbackMap>().mMap);
|
||||
engine.setScriptConsoleMode (variables["script-console"].as<bool>());
|
||||
engine.setStartupScript (variables["script-run"].as<std::string>());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
#include "console.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
#include <fstream>
|
||||
|
||||
#include <components/esm_store/reclists.hpp>
|
||||
#include <components/esm_store/store.hpp>
|
||||
@ -201,6 +202,21 @@ namespace MWGui
|
||||
}
|
||||
}
|
||||
|
||||
void Console::executeFile (const std::string& path)
|
||||
{
|
||||
std::ifstream stream (path.c_str());
|
||||
|
||||
if (!stream.is_open())
|
||||
printError ("failed to open file: " + path);
|
||||
else
|
||||
{
|
||||
std::string line;
|
||||
|
||||
while (std::getline (stream, line))
|
||||
execute (line);
|
||||
}
|
||||
}
|
||||
|
||||
void Console::keyPress(MyGUI::WidgetPtr _sender,
|
||||
MyGUI::KeyCode key,
|
||||
MyGUI::Char _char)
|
||||
|
@ -91,6 +91,8 @@ namespace MWGui
|
||||
|
||||
void execute (const std::string& command);
|
||||
|
||||
void executeFile (const std::string& command);
|
||||
|
||||
private:
|
||||
|
||||
void keyPress(MyGUI::WidgetPtr _sender,
|
||||
|
@ -740,3 +740,8 @@ bool WindowManager::getWorldMouseOver()
|
||||
{
|
||||
return mHud->getWorldMouseOver();
|
||||
}
|
||||
|
||||
void WindowManager::executeInConsole (const std::string& path)
|
||||
{
|
||||
mConsole->executeFile (path);
|
||||
}
|
||||
|
@ -237,6 +237,8 @@ namespace MWGui
|
||||
|
||||
void processChangedSettings(const Settings::CategorySettingVector& changed);
|
||||
|
||||
void executeInConsole (const std::string& path);
|
||||
|
||||
private:
|
||||
OEngine::GUI::MyGUIManager *mGuiManager;
|
||||
HUD *mHud;
|
||||
|
Loading…
x
Reference in New Issue
Block a user