pingus-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pingus-CVS] r3208 - in trunk/pingus: . data/images/core/editor src/edit


From: grumbel at BerliOS
Subject: [Pingus-CVS] r3208 - in trunk/pingus: . data/images/core/editor src/editor
Date: Fri, 21 Sep 2007 22:06:31 +0200

Author: grumbel
Date: 2007-09-21 22:06:30 +0200 (Fri, 21 Sep 2007)
New Revision: 3208

Modified:
   trunk/pingus/TODO
   trunk/pingus/data/images/core/editor/play.png
   trunk/pingus/src/editor/editor_viewport.cpp
   trunk/pingus/src/editor/editor_viewport.hpp
Log:
- added keyboard shortcuts to the editor (the simple way, not using input 
subsystem)

Modified: trunk/pingus/TODO
===================================================================
--- trunk/pingus/TODO   2007-09-21 19:09:43 UTC (rev 3207)
+++ trunk/pingus/TODO   2007-09-21 20:06:30 UTC (rev 3208)
@@ -186,20 +186,9 @@
 - implement proper tmpfile Support (save tmp levels to ~/.pingus/tmp/
   for backup purpose in case of editor crash or so)
 
-- keyboard shortcuts need to be implemented (use input framework, but
-  how without support for keymaps?)
+- keyboard shortcuts need to be implemented with input framework, but
+  how without support for keymaps?
 
-  a       - select all
-  shift+click - add object to selection/remove from selection
-  d       - duplicate
-  delete  - delete object
-  insert  - show/hide objectselector
-  cursor  - pixel width moves (alternative: hold a button for slow moves)
-  f       - hflip
-  shift+f - vflip
-  r       - rotate90
-  shift+r - rotate270
-
 - ObjectSelector need to support more object types, missing types:
   all kinds of traps, weather, special objects
 

Modified: trunk/pingus/data/images/core/editor/play.png
===================================================================
(Binary files differ)

Modified: trunk/pingus/src/editor/editor_viewport.cpp
===================================================================
--- trunk/pingus/src/editor/editor_viewport.cpp 2007-09-21 19:09:43 UTC (rev 
3207)
+++ trunk/pingus/src/editor/editor_viewport.cpp 2007-09-21 20:06:30 UTC (rev 
3208)
@@ -208,7 +208,102 @@
 void
 EditorViewport::on_key_pressed(const unsigned short c)
 {
-  std::cout << "EditorViewport::on_key_pressed: " << int(c) << " " << c << 
std::endl;
+  if (c < 256)
+    {
+      switch(c)
+        {
+          case 'A':
+            clear_selection();
+            selection_changed(selected_objs);
+            break;
+
+          case 'a':
+            if (selected_objs == objs)
+              {
+                clear_selection();
+              }
+            else 
+              {
+                clear_selection();
+                selected_objs = objs;
+                for (unsigned i = 0; i < selected_objs.size(); i++)
+                  selected_objs[i]->select();
+              }
+            selection_changed(selected_objs);
+            break;
+
+          case ']':
+          case 'w':
+            raise_objects();
+            break;
+            
+          case '}':
+          case 'W':
+            raise_objects_to_top();
+            break;
+
+          case '{':
+          case 'S':
+            lower_objects_to_bottom();
+            break;
+
+          case '[':
+          case 's':
+            lower_objects();
+            break;
+
+          case 'r':
+            rotate_90_selected_objects();
+            break;
+            
+          case 'R':
+            rotate_270_selected_objects();
+            break;
+
+          case 8: // backspace
+          case 127: // delete
+            delete_selected_objects();
+            break;
+             
+          case 'd':
+            duplicate_selected_objects();
+            break;
+
+          case 'V':
+          case 'f':
+            hflip_selected_objects();
+            break;
+
+          case 'F':
+          case 'v':
+            vflip_selected_objects();
+            break;
+            
+          case 'c': // dvorak-up
+          case 'i': // up
+            move_objects(Vector2i(0,-1));
+            break;
+
+          case 't': // dvorak-down
+          case 'k': // down
+            move_objects(Vector2i(0,1));
+            break;
+
+          case 'h': // dvorak-left
+          case 'j': // left
+            move_objects(Vector2i(-1,0));
+            break;
+
+          case 'n': // dvorak-right
+          case 'l': // right
+            move_objects(Vector2i(1,0));
+            break;
+
+          default:
+            std::cout << "EditorViewport::on_key_pressed: " << int(c) << " " 
<< (char)c << std::endl;
+            break;
+        }
+    }
 }
 
 // Draws all of the objects in the viewport and the background (if any)
@@ -485,6 +580,16 @@
 }
 
 void
+EditorViewport::move_objects(const Vector2i& offset)
+{
+  for (unsigned i = 0; i < selected_objs.size(); i++)
+    {
+      Vector3f p = selected_objs[i]->get_pos(); 
+      selected_objs[i]->set_pos(Vector3f(p.x + offset.x, p.y + offset.y, p.z));
+    }
+}
+
+void
 EditorViewport::clear()
 {
   selected_objs.clear();

Modified: trunk/pingus/src/editor/editor_viewport.hpp
===================================================================
--- trunk/pingus/src/editor/editor_viewport.hpp 2007-09-21 19:09:43 UTC (rev 
3207)
+++ trunk/pingus/src/editor/editor_viewport.hpp 2007-09-21 20:06:30 UTC (rev 
3208)
@@ -146,6 +146,8 @@
   void raise_objects_to_top();
   void lower_objects_to_bottom();
 
+  void move_objects(const Vector2i& offset);
+
   Vector2i screen2world(int x, int y) const;
 
   void update_layout();





reply via email to

[Prev in Thread] Current Thread [Next in Thread]