pingus-cvs
[Top][All Lists]
Advanced

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

[Pingus-CVS] r3250 - in trunk/pingus/src: display editor gui


From: grumbel at BerliOS
Subject: [Pingus-CVS] r3250 - in trunk/pingus/src: display editor gui
Date: Thu, 27 Sep 2007 05:12:37 +0200

Author: grumbel
Date: 2007-09-27 05:12:35 +0200 (Thu, 27 Sep 2007)
New Revision: 3250

Modified:
   trunk/pingus/src/display/drawing_request.hpp
   trunk/pingus/src/editor/editor_screen.cpp
   trunk/pingus/src/editor/editor_screen.hpp
   trunk/pingus/src/editor/editor_viewport.cpp
   trunk/pingus/src/gui/gui_manager.cpp
   trunk/pingus/src/gui/screen.hpp
   trunk/pingus/src/gui/screen_manager.cpp
Log:
- implemented editor window resize a bit more

Modified: trunk/pingus/src/display/drawing_request.hpp
===================================================================
--- trunk/pingus/src/display/drawing_request.hpp        2007-09-26 23:00:03 UTC 
(rev 3249)
+++ trunk/pingus/src/display/drawing_request.hpp        2007-09-27 03:12:35 UTC 
(rev 3250)
@@ -30,12 +30,17 @@
 {
 protected:
   Vector3f pos;
+  bool     valid;
 
+  std::vector<Rect> dirty_rects;
+
 public:
-  DrawingRequest(const Vector3f& pos_) : pos(pos_) {}
+  DrawingRequest(const Vector3f& pos_) : pos(pos_), valid(true) {}
   virtual ~DrawingRequest() {};
   
   virtual void render(SDL_Surface* gc, const Rect& rect) = 0;
+
+  virtual void mark(const Rect& r) { dirty_rects.push_back(r); }
   
   /** Returns true if the request contains an alpha channel and needs
       to be drawn in order */
@@ -43,6 +48,9 @@
 
   /** Returns the position at which the request should be drawn */
   virtual float get_z_pos() { return pos.z; }
+
+  virtual void set_valid(bool v) { valid = v; }
+  virtual bool is_valid() const { return valid; }
 private:
   DrawingRequest (const DrawingRequest&);
   DrawingRequest& operator= (const DrawingRequest&);

Modified: trunk/pingus/src/editor/editor_screen.cpp
===================================================================
--- trunk/pingus/src/editor/editor_screen.cpp   2007-09-26 23:00:03 UTC (rev 
3249)
+++ trunk/pingus/src/editor/editor_screen.cpp   2007-09-27 03:12:35 UTC (rev 
3250)
@@ -47,7 +47,7 @@
 #include "level_properties.hpp"
 
 namespace Editor {
-
+
 // Default constructor
 EditorScreen::EditorScreen()
   : plf(new EditorLevel(this)), 
@@ -449,6 +449,21 @@
   ScreenManager::instance()->pop_screen();  
 }
 
+void
+EditorScreen::resize(const Size& size)
+{
+  gui_manager->set_rect(Rect(Vector2i(0, 0), size));
+
+  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
+    viewport->set_rect(Rect(0, 38, size.width, size.height));
+
+  object_properties->set_rect(Rect(Vector2i(0, size.height-150), Size(200, 
150)));
+}
+
 } // namespace Editor 
 
 /* EOF */

Modified: trunk/pingus/src/editor/editor_screen.hpp
===================================================================
--- trunk/pingus/src/editor/editor_screen.hpp   2007-09-26 23:00:03 UTC (rev 
3249)
+++ trunk/pingus/src/editor/editor_screen.hpp   2007-09-27 03:12:35 UTC (rev 
3250)
@@ -137,6 +137,8 @@
 
   void exit();
 
+  void resize(const Size&);
+
 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-26 23:00:03 UTC (rev 
3249)
+++ trunk/pingus/src/editor/editor_viewport.cpp 2007-09-27 03:12:35 UTC (rev 
3250)
@@ -573,6 +573,7 @@
 void
 EditorViewport::update_layout()
 {
+  std::cout << "Viewport: Rect: " << rect.get_width() << " " << 
rect.get_height() << std::endl;
   state.set_size(rect.get_width(), rect.get_height());
   drawing_context->set_rect(rect);
 }

Modified: trunk/pingus/src/gui/gui_manager.cpp
===================================================================
--- trunk/pingus/src/gui/gui_manager.cpp        2007-09-26 23:00:03 UTC (rev 
3249)
+++ trunk/pingus/src/gui/gui_manager.cpp        2007-09-27 03:12:35 UTC (rev 
3250)
@@ -30,7 +30,7 @@
 namespace GUI { 
 
 GUIManager::GUIManager ()
-  : GroupComponent(Rect(0, 0, Display::get_width(), Display::get_height())),
+  : GroupComponent(Rect(0, 0, Display::get_width(), Display::get_height()), 
false),
     mouse_pos(400,300)
 {
 }

Modified: trunk/pingus/src/gui/screen.hpp
===================================================================
--- trunk/pingus/src/gui/screen.hpp     2007-09-26 23:00:03 UTC (rev 3249)
+++ trunk/pingus/src/gui/screen.hpp     2007-09-27 03:12:35 UTC (rev 3250)
@@ -23,6 +23,7 @@
 #include "SDL.h"
 #include "game_delta.hpp"
 
+class Size;
 class DrawingContext;
 
 /** A interface for screens. A screen is a Pingus 'thing' which gets
@@ -53,6 +54,8 @@
       newly pushed screen */
   virtual void on_shutdown () {}
 
+  virtual void resize(const Size&) {}
+
 private:
   Screen (const Screen&);
   Screen& operator= (const Screen&);

Modified: trunk/pingus/src/gui/screen_manager.cpp
===================================================================
--- trunk/pingus/src/gui/screen_manager.cpp     2007-09-26 23:00:03 UTC (rev 
3249)
+++ trunk/pingus/src/gui/screen_manager.cpp     2007-09-27 03:12:35 UTC (rev 
3250)
@@ -221,7 +221,7 @@
 
   if (!screens.empty ())
     {
-      screens.back ()->on_startup ();
+      screens.back()->on_startup ();
     }
 }
 
@@ -294,6 +294,12 @@
 ScreenManager::resize(const Size& size)
 {
   std::cout << "Resize: " << size.width << "x" << size.height << std::endl;
+
+  // FIXME: Calling this causes horrible flicker, any better way to resize the 
screen?
+  Display::set_video_mode(size.width, size.height);
+
+  get_current_screen()->resize(size);
+
 }
 
 void





reply via email to

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