pingus-cvs
[Top][All Lists]
Advanced

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

[Pingus-CVS] r3258 - in trunk/pingus/src: editor input


From: grumbel at BerliOS
Subject: [Pingus-CVS] r3258 - in trunk/pingus/src: editor input
Date: Sat, 29 Sep 2007 16:26:55 +0200

Author: grumbel
Date: 2007-09-29 16:26:55 +0200 (Sat, 29 Sep 2007)
New Revision: 3258

Modified:
   trunk/pingus/src/editor/editor_screen.cpp
   trunk/pingus/src/editor/editor_screen.hpp
   trunk/pingus/src/editor/editor_viewport.cpp
   trunk/pingus/src/editor/editor_viewport.hpp
   trunk/pingus/src/editor/minimap.cpp
   trunk/pingus/src/input/evdev_device.cpp
Log:
- added scroller support to the editor

Modified: trunk/pingus/src/editor/editor_screen.cpp
===================================================================
--- trunk/pingus/src/editor/editor_screen.cpp   2007-09-29 13:29:04 UTC (rev 
3257)
+++ trunk/pingus/src/editor/editor_screen.cpp   2007-09-29 14:26:55 UTC (rev 
3258)
@@ -252,6 +252,25 @@
 {
   GUIScreen::update(delta);
 
+  const Input::EventLst& events = delta.get_events ();
+  for (Input::EventLst::const_iterator i = events.begin ();
+       i != events.end ();
+       ++i)
+    {
+      switch (i->type)
+       {
+          case Input::SCROLLER_EVENT_TYPE:
+            viewport->set_scroll_pos(viewport->get_scroll_pos() -
+                                     Vector2f(i->scroll.x_delta,
+                                              i->scroll.y_delta));
+            break;
+
+          default:
+            // other events are for most part handled by the 
GUIScreen/GUIManager
+            break;
+       }
+    }
+
   SDL_Delay(10); // FIXME: Brute force delay to get CPU usage down
 }
 
@@ -456,12 +475,18 @@
 }
 
 void
-EditorScreen::resize(const Size& size)
+EditorScreen::update_layout()
 {
-  gui_manager->set_rect(Rect(Vector2i(0, 0), size));
+  Size size(gui_manager->get_rect().get_width(),
+            gui_manager->get_rect().get_height());
 
-  object_selector->set_rect(Rect(size.width-244, 38, size.width, size.height));
+  minimap->set_rect(Rect(Vector2i(size.width-244, size.height-183), Size(244, 
183)));
 
+  if (minimap->is_visible())
+    object_selector->set_rect(Rect(size.width-244, 38, size.width, size.height 
- 183));
+  else
+    object_selector->set_rect(Rect(size.width-244, 38, size.width, 
size.height));
+
   if (object_selector->is_visible())
     viewport->set_rect(Rect(0, 38, size.width - 244, size.height));
   else
@@ -471,8 +496,15 @@
                                    
Size(object_properties->get_rect().get_width(),
                                         
object_properties->get_rect().get_height())));
 
-  level_properties->set_rect(Rect(Vector2i(0,38), Size(size.width-244,302)));
+  level_properties->set_rect(Rect(Vector2i(0,38), Size(size.width-244,302))); 
 }
+
+void
+EditorScreen::resize(const Size& size)
+{
+  gui_manager->set_rect(Rect(Vector2i(0, 0), size));
+  update_layout();
+}
 
 } // namespace Editor 
 

Modified: trunk/pingus/src/editor/editor_screen.hpp
===================================================================
--- trunk/pingus/src/editor/editor_screen.hpp   2007-09-29 13:29:04 UTC (rev 
3257)
+++ trunk/pingus/src/editor/editor_screen.hpp   2007-09-29 14:26:55 UTC (rev 
3258)
@@ -142,6 +142,7 @@
 
   void resize(const Size&);
 
+  void update_layout();
 private:
   EditorScreen (const EditorScreen&);
   EditorScreen& operator= (const EditorScreen&);

Modified: trunk/pingus/src/editor/editor_viewport.cpp
===================================================================
--- trunk/pingus/src/editor/editor_viewport.cpp 2007-09-29 13:29:04 UTC (rev 
3257)
+++ trunk/pingus/src/editor/editor_viewport.cpp 2007-09-29 14:26:55 UTC (rev 
3258)
@@ -606,14 +606,14 @@
   selection_changed(selected_objs);
 }
 
-Vector2i
+Vector2f
 EditorViewport::get_scroll_pos() const
 {
-  return Vector2i(state.get_pos());
+  return state.get_pos();
 }
 
 void
-EditorViewport::set_scroll_pos(Vector2i pos)
+EditorViewport::set_scroll_pos(const Vector2f& pos)
 {
   state.set_pos(pos);
 }

Modified: trunk/pingus/src/editor/editor_viewport.hpp
===================================================================
--- trunk/pingus/src/editor/editor_viewport.hpp 2007-09-29 13:29:04 UTC (rev 
3257)
+++ trunk/pingus/src/editor/editor_viewport.hpp 2007-09-29 14:26:55 UTC (rev 
3258)
@@ -114,8 +114,8 @@
   /** Return a pointer to the EditorScreen object */
   EditorScreen* get_screen() { return editor; }
 
-  Vector2i get_scroll_pos() const;
-  void     set_scroll_pos(Vector2i pos);
+  Vector2f get_scroll_pos() const;
+  void     set_scroll_pos(const Vector2f& pos);
 
   /// Mouse actions
   void on_primary_button_press(int x, int y);

Modified: trunk/pingus/src/editor/minimap.cpp
===================================================================
--- trunk/pingus/src/editor/minimap.cpp 2007-09-29 13:29:04 UTC (rev 3257)
+++ trunk/pingus/src/editor/minimap.cpp 2007-09-29 14:26:55 UTC (rev 3258)
@@ -85,14 +85,14 @@
       dc.draw_rect(r, color, (*i)->get_pos().z);
     }
 
-  Vector2i viewport_pos  = editor->get_viewport()->get_scroll_pos();
+  Vector2f viewport_pos  = editor->get_viewport()->get_scroll_pos();
   Rect     viewport_rect = editor->get_viewport()->get_rect();
 
   viewport_pos.x -= viewport_rect.get_width()/2;
   viewport_pos.y -= viewport_rect.get_height()/2;
 
-  Rect view(Vector2i(viewport_pos.x * minimap_rect.get_width() / 
levelsize.width,
-                     viewport_pos.y * minimap_rect.get_height() / 
levelsize.height),
+  Rect view(Vector2i(int(viewport_pos.x * minimap_rect.get_width() / 
levelsize.width),
+                     int(viewport_pos.y * minimap_rect.get_height() / 
levelsize.height)),
             Size(viewport_rect.get_width()  * minimap_rect.get_width() / 
levelsize.width,
                  viewport_rect.get_height() * minimap_rect.get_height() / 
levelsize.height));
   dc.draw_fillrect(view, Color(255, 255, 0, 150), 1000000.0f);

Modified: trunk/pingus/src/input/evdev_device.cpp
===================================================================
--- trunk/pingus/src/input/evdev_device.cpp     2007-09-29 13:29:04 UTC (rev 
3257)
+++ trunk/pingus/src/input/evdev_device.cpp     2007-09-29 14:26:55 UTC (rev 
3258)
@@ -231,10 +231,10 @@
 void
 EvdevDevice::update(float delta)
 {
-  struct input_event ev[64];
-       
-  int rd = read(fd, ev, sizeof(struct input_event) * 64);
-
+  struct input_event ev[128];
+  // FIXME: turn this into a while loop so all events get processed
+  int rd = read(fd, ev, sizeof(struct input_event) * 128);
+  //std::cout << rd / sizeof(struct input_event) << std::endl;
   if (rd >= (int) sizeof(struct input_event))
     {
       for (int i = 0; i < rd / (int)sizeof(struct input_event); ++i)





reply via email to

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