Daniele Bartolini 9 лет назад
Родитель
Сommit
7a9be2cb5b
2 измененных файлов с 16 добавлено и 6 удалено
  1. 10 3
      tools/level_editor/level.vala
  2. 6 3
      tools/level_editor/level_editor.vala

+ 10 - 3
tools/level_editor/level.vala

@@ -12,6 +12,7 @@ namespace Crown
 	{
 		// Project paths
 		private string _source_dir;
+		private string _toolchain_dir;
 
 		// Engine connections
 		private ConsoleClient _client;
@@ -25,10 +26,11 @@ namespace Crown
 		// Signals
 		public signal void selection_changed(Gee.ArrayList<Guid?> selection);
 
-		public Level(Database db, ConsoleClient client, string source_dir)
+		public Level(Database db, ConsoleClient client, string source_dir, string toolchain_dir)
 		{
 			// Project paths
 			_source_dir = source_dir;
+			_toolchain_dir = toolchain_dir;
 
 			// Engine connections
 			_client = client;
@@ -65,7 +67,7 @@ namespace Crown
 
 		public void new_level()
 		{
-			load(_source_dir + "core/editors/levels/empty.level");
+			load(_toolchain_dir + "core/editors/levels/empty.level");
 		}
 
 		public void load(string path)
@@ -88,7 +90,12 @@ namespace Crown
 				return;
 
 			Database prefab_db = new Database();
-			prefab_db.load(_source_dir + "/" + name + ".unit");
+
+			File file = File.new_for_path(_toolchain_dir + "/" + name + ".unit");
+			if (file.query_exists())
+				prefab_db.load(file.get_path());
+			else
+				prefab_db.load(_source_dir + "/" + name + ".unit");
 
 			Value? prefab = prefab_db.get_property(GUID_ZERO, "prefab");
 			if (prefab != null)

+ 6 - 3
tools/level_editor/level_editor.vala

@@ -39,6 +39,7 @@ namespace Crown
 	{
 		// Project paths
 		private string _source_dir;
+		private string _toolchain_dir;
 		private string _bundle_dir;
 		private string _platform;
 
@@ -183,12 +184,13 @@ namespace Crown
 			{ "debug-physics-world", null, "Debug Physics World", null, null, on_debug_physics_world, false }
 		};
 
-		public LevelEditor(string source_dir, string bundle_dir)
+		public LevelEditor(string source_dir, string toolchain_dir, string bundle_dir)
 		{
 			this.title = "Level Editor";
 
 			// Project paths
 			_source_dir = source_dir;
+			_toolchain_dir = toolchain_dir;
 			_bundle_dir = bundle_dir;
 			_platform   = "linux";
 
@@ -218,7 +220,7 @@ namespace Crown
 
 			// Level data
 			_db = new Database();
-			_level = new Level(_db, _engine, _source_dir);
+			_level = new Level(_db, _engine, _source_dir, _toolchain_dir);
 			_level_filename = null;
 			_resource_compiler = new ResourceCompiler(_compiler);
 
@@ -521,6 +523,7 @@ namespace Crown
 			{
 				ENGINE_EXE,
 				"--source-dir", _source_dir,
+				"--map-source-dir", "core", _toolchain_dir,
 				"--server",
 				null
 			};
@@ -1127,7 +1130,7 @@ namespace Crown
 		Gtk.StyleContext.add_provider_for_screen(screen, provider, STYLE_PROVIDER_PRIORITY_APPLICATION);
 		provider.load_from_path("ui/theme/style.css");
 
-		var window = new LevelEditor(args[1], args[2]);
+		var window = new LevelEditor(args[1], args[2], args[3]);
 		window.show_all();
 
 		Gtk.main();