summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcelo Fernandez <marcelofg55@gmail.com>2018-11-18 10:56:21 -0300
committerMarcelo Fernandez <marcelofg55@gmail.com>2018-12-13 18:23:51 -0300
commit8dad3811c52a23ce53b8e165dc065f38ab5c4ccc (patch)
tree664b34e959b06fe29619779efc5e2284b444070c
parent35b421b6954c5baff4b4fd4bc56b09c85dae6ff5 (diff)
Add application/config/project_settings_override option to override project settings
-rw-r--r--core/project_settings.cpp15
-rw-r--r--core/project_settings.h2
-rw-r--r--doc/classes/ProjectSettings.xml3
3 files changed, 19 insertions, 1 deletions
diff --git a/core/project_settings.cpp b/core/project_settings.cpp
index 407bb78375..031ac06063 100644
--- a/core/project_settings.cpp
+++ b/core/project_settings.cpp
@@ -307,7 +307,7 @@ void ProjectSettings::_convert_to_last_version() {
* If a project file is found, load it or fail.
* If nothing was found, error out.
*/
-Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bool p_upwards) {
+Error ProjectSettings::_setup(const String &p_path, const String &p_main_pack, bool p_upwards) {
// If looking for files in a network client, use it directly
@@ -450,6 +450,18 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bo
return OK;
}
+Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bool p_upwards) {
+ Error err = _setup(p_path, p_main_pack, p_upwards);
+ if (err == OK) {
+ String custom_settings = GLOBAL_DEF("application/config/project_settings_override", "");
+ if (custom_settings != "") {
+ _load_settings_text(custom_settings);
+ }
+ }
+
+ return err;
+}
+
bool ProjectSettings::has_setting(String p_var) const {
_THREAD_SAFE_METHOD_
@@ -995,6 +1007,7 @@ ProjectSettings::ProjectSettings() {
GLOBAL_DEF("application/run/disable_stderr", false);
GLOBAL_DEF("application/config/use_custom_user_dir", false);
GLOBAL_DEF("application/config/custom_user_dir_name", "");
+ GLOBAL_DEF("application/config/project_settings_override", "");
action = Dictionary();
action["deadzone"] = Variant(0.5f);
diff --git a/core/project_settings.h b/core/project_settings.h
index 611355f2ef..f150e4499b 100644
--- a/core/project_settings.h
+++ b/core/project_settings.h
@@ -112,6 +112,8 @@ protected:
void _add_property_info_bind(const Dictionary &p_info);
+ Error _setup(const String &p_path, const String &p_main_pack, bool p_upwards = false);
+
protected:
static void _bind_methods();
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index 9706ea4e60..d4dacdb537 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -184,6 +184,9 @@
<member name="application/config/use_custom_user_dir" type="bool" setter="" getter="">
Allow the project to save to its own custom user dir (in AppData on windows or ~/.config on unixes). This setting only works for desktop exporters. A name must be set in the "custom_user_dir_name" setting for this to take effect.
</member>
+ <member name="application/config/project_settings_override" type="String" setter="" getter="">
+ Specifies a file to override project settings. For example: user://custom_settings.cfg.
+ </member>
<member name="application/run/disable_stderr" type="bool" setter="" getter="">
Disable printing to stderr on exported build.
</member>