Browse Source

Merge pull request #17048 from hpvb/fix-17028

Allow running with a custom resource without a main scene
Rémi Verschelde 7 years ago
parent
commit
636e48b707
1 changed files with 16 additions and 15 deletions
  1. 16 15
      main/main.cpp

+ 16 - 15
main/main.cpp

@@ -349,6 +349,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
 	Vector<String> breakpoints;
 	bool use_custom_res = true;
 	bool force_res = false;
+	bool found_project = false;
 
 	packed_data = PackedData::get_singleton();
 	if (!packed_data)
@@ -760,7 +761,9 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
 
 #endif
 
-	if (globals->setup(game_path, main_pack, upwards) != OK) {
+	if (globals->setup(game_path, main_pack, upwards) == OK) {
+		found_project = true;
+	} else {
 
 #ifdef TOOLS_ENABLED
 		editor = false;
@@ -768,15 +771,6 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
 		OS::get_singleton()->print("Error: Could not load game path '%s'.\n", game_path.ascii().get_data());
 
 		goto error;
-#endif
-	} else if (String(GLOBAL_DEF("application/run/main_scene", "")) == "") {
-#ifdef TOOLS_ENABLED
-		if (!editor) {
-#endif
-			OS::get_singleton()->print("Error: Can't run project: no main scene defined.\n");
-			goto error;
-#ifdef TOOLS_ENABLED
-		}
 #endif
 	}
 
@@ -801,14 +795,21 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
 
 	if (!project_manager) {
 		// Determine if the project manager should be requested
-		project_manager =
-				main_args.size() == 0 &&
-				!ProjectSettings::get_singleton()->has_setting("application/run/main_loop_type") &&
-				(!ProjectSettings::get_singleton()->has_setting("application/run/main_scene") ||
-						String(ProjectSettings::get_singleton()->get("application/run/main_scene")) == "");
+		project_manager = main_args.size() == 0 && !found_project;
 	}
 #endif
 
+	if (main_args.size() == 0 && String(GLOBAL_DEF("application/run/main_scene", "")) == "") {
+#ifdef TOOLS_ENABLED
+		if (!editor && !project_manager) {
+#endif
+			OS::get_singleton()->print("Error: Can't run project: no main scene defined.\n");
+			goto error;
+#ifdef TOOLS_ENABLED
+		}
+#endif
+	}
+
 	if (editor || project_manager) {
 		use_custom_res = false;
 		input_map->load_default(); //keys for editor