Daniele Bartolini 9 лет назад
Родитель
Сommit
d68801dc04
2 измененных файлов с 32 добавлено и 14 удалено
  1. 10 14
      tools/level_editor/engine_view.vala
  2. 22 0
      tools/level_editor/level_editor.vala

+ 10 - 14
tools/level_editor/engine_view.vala

@@ -44,13 +44,11 @@ namespace Crown
 		{
 			switch (k)
 			{
-			case Gdk.Key.w:         return "w";
-			case Gdk.Key.a:         return "a";
-			case Gdk.Key.s:         return "s";
-			case Gdk.Key.d:         return "d";
-			case Gdk.Key.Control_L: return "left_ctrl";
-			case Gdk.Key.Shift_L:   return "left_shift";
-			default:                return "<unknown>";
+			case Gdk.Key.w: return "w";
+			case Gdk.Key.a: return "a";
+			case Gdk.Key.s: return "s";
+			case Gdk.Key.d: return "d";
+			default:        return "<unknown>";
 			}
 		}
 
@@ -77,12 +75,10 @@ namespace Crown
 			_window_id = 0;
 
 			_keys = new HashMap<int, bool>();
-			_keys[Gdk.Key.w]         = false;
-			_keys[Gdk.Key.a]         = false;
-			_keys[Gdk.Key.s]         = false;
-			_keys[Gdk.Key.d]         = false;
-			_keys[Gdk.Key.Control_L] = false;
-			_keys[Gdk.Key.Shift_L]   = false;
+			_keys[Gdk.Key.w] = false;
+			_keys[Gdk.Key.a] = false;
+			_keys[Gdk.Key.s] = false;
+			_keys[Gdk.Key.d] = false;
 
 			// Widgets
 			_socket = new Gtk.Socket();
@@ -178,7 +174,7 @@ namespace Crown
 
 			_keys[(int)ev.keyval] = true;
 
-			return true;
+			return false;
 		}
 
 		private bool on_key_release(Gdk.EventKey ev)

+ 22 - 0
tools/level_editor/level_editor.vala

@@ -328,12 +328,34 @@ namespace Crown
 
 			this.destroy.connect(this.on_destroy);
 			this.delete_event.connect(this.on_delete_event);
+			this.key_press_event.connect(this.on_key_press);
+			this.key_release_event.connect(this.on_key_release);
 
 			this.add(_vbox);
 			this.maximize();
 			this.show_all();
 		}
 
+		private bool on_key_press(Gdk.EventKey ev)
+		{
+			if (ev.keyval == Gdk.Key.Control_L)
+				_engine.send_script(LevelEditorApi.key_down("left_ctrl"));
+			else if (ev.keyval == Gdk.Key.Shift_L)
+				_engine.send_script(LevelEditorApi.key_down("left_shift"));
+
+			return false;
+		}
+
+		private bool on_key_release(Gdk.EventKey ev)
+		{
+			if (ev.keyval == Gdk.Key.Control_L)
+				_engine.send_script(LevelEditorApi.key_up("left_ctrl"));
+			else if (ev.keyval == Gdk.Key.Shift_L)
+				_engine.send_script(LevelEditorApi.key_up("left_shift"));
+
+			return false;
+		}
+
 		private void on_resource_browser_resource_selected(string type, string name)
 		{
 			_engine.send_script(LevelEditorApi.set_placeable(type, name));