pingus-cvs
[Top][All Lists]
Advanced

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

[Pingus-CVS] r3746 - in trunk/pingus/src: . display screen


From: grumbel at BerliOS
Subject: [Pingus-CVS] r3746 - in trunk/pingus/src: . display screen
Date: Tue, 8 Jul 2008 15:57:29 +0200

Author: grumbel
Date: 2008-07-08 15:57:28 +0200 (Tue, 08 Jul 2008)
New Revision: 3746

Modified:
   trunk/pingus/src/display/display.cpp
   trunk/pingus/src/display/display.hpp
   trunk/pingus/src/font_test_screen.cpp
   trunk/pingus/src/screen/gui_screen.cpp
   trunk/pingus/src/screen/screen.hpp
   trunk/pingus/src/screen/screen_manager.cpp
Log:
Resize screens on the stack when they go back into action

Modified: trunk/pingus/src/display/display.cpp
===================================================================
--- trunk/pingus/src/display/display.cpp        2008-07-08 12:16:56 UTC (rev 
3745)
+++ trunk/pingus/src/display/display.cpp        2008-07-08 13:57:28 UTC (rev 
3746)
@@ -76,6 +76,12 @@
   return screen->h;
 }
 
+Size
+Display::get_size()
+{
+  return Size(screen->w, screen->h);
+}
+
 void
 Display::clear()
 {

Modified: trunk/pingus/src/display/display.hpp
===================================================================
--- trunk/pingus/src/display/display.hpp        2008-07-08 12:16:56 UTC (rev 
3745)
+++ trunk/pingus/src/display/display.hpp        2008-07-08 13:57:28 UTC (rev 
3746)
@@ -21,6 +21,7 @@
 #include "SDL.h"
 #include <list>
 #include <vector>
+#include "../math/size.hpp"
 
 class Vector2i;
 class Rect;
@@ -46,6 +47,7 @@
 
   static int get_width();
   static int get_height();
+  static Size get_size();
 
   static void set_video_mode(int width, int height);
   

Modified: trunk/pingus/src/font_test_screen.cpp
===================================================================
--- trunk/pingus/src/font_test_screen.cpp       2008-07-08 12:16:56 UTC (rev 
3745)
+++ trunk/pingus/src/font_test_screen.cpp       2008-07-08 13:57:28 UTC (rev 
3746)
@@ -20,11 +20,13 @@
 #include "fonts.hpp"
 #include "string_util.hpp"
 #include "display/drawing_context.hpp"
+#include "display/display.hpp"
 #include "font_description.hpp"
 #include "font_test_screen.hpp"
 
 FontTestScreen::FontTestScreen(const Pathname& fontfile)
-  : scrollx(0),
+  : Screen(Display::get_size()),
+    scrollx(0),
     scrolly(0),
     dark(true)
 {

Modified: trunk/pingus/src/screen/gui_screen.cpp
===================================================================
--- trunk/pingus/src/screen/gui_screen.cpp      2008-07-08 12:16:56 UTC (rev 
3745)
+++ trunk/pingus/src/screen/gui_screen.cpp      2008-07-08 13:57:28 UTC (rev 
3746)
@@ -16,12 +16,13 @@
 
 #include "../globals.hpp"
 #include "../debug.hpp"
+#include "../display/display.hpp"
 #include "gui/gui_manager.hpp"
 #include "gui_screen.hpp"
-
-
+
 GUIScreen::GUIScreen()
-  : gui_manager (new GUI::GUIManager())
+  : Screen(Display::get_size()),
+    gui_manager(new GUI::GUIManager())
 {
 }
 
@@ -162,7 +163,8 @@
 void
 GUIScreen::resize(const Size& size) 
 {
+  Screen::resize(size);
   gui_manager->set_rect(Rect(Vector2i(0, 0), size));
 }
-
+
 /* EOF */

Modified: trunk/pingus/src/screen/screen.hpp
===================================================================
--- trunk/pingus/src/screen/screen.hpp  2008-07-08 12:16:56 UTC (rev 3745)
+++ trunk/pingus/src/screen/screen.hpp  2008-07-08 13:57:28 UTC (rev 3746)
@@ -18,6 +18,7 @@
 #define HEADER_PINGUS_SCREEN_HPP
 
 #include "SDL.h"
+#include "../math/size.hpp"
 
 namespace Input {
 class Event;
@@ -31,10 +32,11 @@
     screens are the PingusMenu or a PingusGameSession */
 class Screen
 {
-private:
+protected:
+  Size size;
 
 public:
-  Screen () { }
+  Screen (const Size& size_) : size(size_) { }
   virtual ~Screen () {}
 
   /** Draw this screen @return true if draw was successfull, false if
@@ -53,8 +55,10 @@
       newly pushed screen */
   virtual void on_shutdown () {}
 
-  virtual void resize(const Size&) {}
+  virtual void resize(const Size& s) { size = s; }
 
+  virtual Size get_size() const { return size; }
+
 private:
   Screen (const Screen&);
   Screen& operator= (const Screen&);

Modified: trunk/pingus/src/screen/screen_manager.cpp
===================================================================
--- trunk/pingus/src/screen/screen_manager.cpp  2008-07-08 12:16:56 UTC (rev 
3745)
+++ trunk/pingus/src/screen/screen_manager.cpp  2008-07-08 13:57:28 UTC (rev 
3746)
@@ -183,11 +183,11 @@
 {
   if (!screens.empty())
     {
-      screens.back ()->on_shutdown ();
+      screens.back()->on_shutdown();
     }
 
-  screens.push_back (ScreenPtr(screen));
-  screen->on_startup ();
+  screens.push_back(ScreenPtr(screen));
+  screen->on_startup();
 }
 
 void
@@ -216,9 +216,12 @@
 ScreenManager::real_replace_screen (ScreenPtr ptr)
 {
   cached_action = CA_NONE;
-  screens.back ()->on_shutdown ();
-  screens.back () = ptr;
-  screens.back ()->on_startup ();
+  screens.back()->on_shutdown ();
+  screens.back() = ptr;
+
+  if (screens.back()->get_size() != Display::get_size())
+    screens.back()->resize(Display::get_size());
+  screens.back()->on_startup();
 }
 
 void
@@ -231,7 +234,9 @@
 
   if (!screens.empty ())
     {
-      screens.back()->on_startup ();
+      if (screens.back()->get_size() != Display::get_size())
+        screens.back()->resize(Display::get_size());
+      screens.back()->on_startup();
     }
 }
 





reply via email to

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