pingus-cvs
[Top][All Lists]
Advanced

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

[Pingus-CVS] r3739 - trunk/pingus/src


From: grumbel at BerliOS
Subject: [Pingus-CVS] r3739 - trunk/pingus/src
Date: Tue, 8 Jul 2008 11:41:53 +0200

Author: grumbel
Date: 2008-07-08 11:41:52 +0200 (Tue, 08 Jul 2008)
New Revision: 3739

Modified:
   trunk/pingus/src/level_menu.cpp
   trunk/pingus/src/level_menu.hpp
Log:
Implemented proper resize handling for LevelsetMenu

Modified: trunk/pingus/src/level_menu.cpp
===================================================================
--- trunk/pingus/src/level_menu.cpp     2008-07-08 08:11:48 UTC (rev 3738)
+++ trunk/pingus/src/level_menu.cpp     2008-07-08 09:41:52 UTC (rev 3739)
@@ -33,7 +33,7 @@
 #include "globals.hpp"
 #include "gui/surface_button.hpp"
 #include "sound/sound.hpp"
-
+
 class LevelMenuAbortButton
   : public GUI::SurfaceButton
 {
@@ -41,9 +41,8 @@
   LevelMenu* parent;
 
 public:
-  LevelMenuAbortButton(LevelMenu* p)
-    : GUI::SurfaceButton(Display::get_width()/2 - 300,
-                         Display::get_height()/2 + 144,
+  LevelMenuAbortButton(LevelMenu* p, int x, int y)
+    : GUI::SurfaceButton(x, y,
                          ResDescriptor("core/start/back"),
                          ResDescriptor("core/start/back_clicked"),
                          ResDescriptor("core/start/back_hover")),
@@ -340,34 +339,34 @@
 
 LevelMenu::LevelMenu()
   : x_pos((Display::get_width()  - default_screen_width)/2),
-    y_pos((Display::get_height() - default_screen_height)/2)
+    y_pos((Display::get_height() - default_screen_height)/2),
+    background("core/menu/wood"),
+    blackboard("core/menu/blackboard")
 {
-  //background = Sprite("core/menu/filedialog");
-  background = Sprite("core/menu/startscreenbg");
-  background.scale(Display::get_width(), Display::get_height());
-
   ok_button  = Sprite("core/start/ok");
 
   levelset_selector = new LevelsetSelector(this, Rect(Vector2i(x_pos + 100, 
y_pos + 140), Size(600, 285)));
   level_selector    = new LevelSelector(this, Rect(Vector2i(x_pos + 100, y_pos 
+ 160), Size(600, 256)));
 
-  gui_manager->add(new LevelScrollButton(Display::get_width()/2  + 160,
-                                         Display::get_height()/2 + 145,
-                                         "core/menu/arrow_left",
-                                         boost::bind(&LevelMenu::prev_page, 
this)));
+  gui_manager->add(prev_button = new LevelScrollButton(Display::get_width()/2  
+ 160,
+                                                       Display::get_height()/2 
+ 145,
+                                                       "core/menu/arrow_left",
+                                                       
boost::bind(&LevelMenu::prev_page, this)));
 
-  gui_manager->add(new LevelScrollButton(Display::get_width()/2  + 230,
-                                         Display::get_height()/2 + 145,
-                                         "core/menu/arrow_right",
-                                         boost::bind(&LevelMenu::next_page, 
this)));
+  gui_manager->add(next_button = new LevelScrollButton(Display::get_width()/2  
+ 230,
+                                                       Display::get_height()/2 
+ 145,
+                                                       "core/menu/arrow_right",
+                                                       
boost::bind(&LevelMenu::next_page, this)));
 
   gui_manager->add(levelset_selector);
   gui_manager->add(level_selector);
-  gui_manager->add(new LevelMenuAbortButton(this));
+  gui_manager->add(abort_button = new LevelMenuAbortButton(this, 
+                                                           
Display::get_width()/2 - 300,
+                                                           
Display::get_height()/2 + 144));
 
   level_selector->hide();
 }
-
+
 LevelMenu::~LevelMenu()
 {
 }
@@ -375,7 +374,12 @@
 void
 LevelMenu::draw_background(DrawingContext& gc)
 {
-  gc.draw(background, Vector2i(gc.get_width()/2, gc.get_height()/2));
+  // Paint the background wood panel
+  for(int y = 0; y < gc.get_height(); y += background.get_height())
+    for(int x = 0; x < gc.get_width(); x += background.get_width())
+      gc.draw(background, x, y);
+
+  gc.draw(blackboard, gc.get_width()/2, gc.get_height()/2);
 }
 
 void
@@ -426,5 +430,24 @@
       level_selector->hide();      
     }
 }
+
+void
+LevelMenu::resize(const Size& size)
+{
+  x_pos = (size.width  - default_screen_width)/2;
+  y_pos = (size.height - default_screen_height)/2;
+
+  levelset_selector->set_rect(Rect(Vector2i(x_pos + 100, y_pos + 140), 
Size(600, 285)));
+  level_selector   ->set_rect(Rect(Vector2i(x_pos + 100, y_pos + 160), 
Size(600, 256)));
+
+  prev_button->set_pos(size.width /2  + 160,
+                       size.height/2 + 145);
+
+  next_button->set_pos(size.width /2  + 230,
+                       size.height/2 + 145);
+
+  abort_button->set_pos(size.width /2 - 300,
+                        size.height/2 + 144);
+}
 
 /* EOF */

Modified: trunk/pingus/src/level_menu.hpp
===================================================================
--- trunk/pingus/src/level_menu.hpp     2008-07-08 08:11:48 UTC (rev 3738)
+++ trunk/pingus/src/level_menu.hpp     2008-07-08 09:41:52 UTC (rev 3739)
@@ -21,9 +21,13 @@
 #include "sprite.hpp"
 #include "screen/gui_screen.hpp"
 
+namespace GUI {
+class SurfaceButton;
+} // namespace GUI
+
 class LevelSelector;
 class LevelsetSelector;
-
+
 /** */
 class LevelMenu : public GUIScreen
 {
@@ -32,11 +36,16 @@
   int y_pos;
 
   Sprite background;
+  Sprite blackboard;
   Sprite ok_button;
 
   LevelSelector*    level_selector;
   LevelsetSelector* levelset_selector;
 
+  GUI::SurfaceButton* abort_button;
+  GUI::SurfaceButton* next_button;
+  GUI::SurfaceButton* prev_button;
+
 public:
   LevelMenu();
   ~LevelMenu();
@@ -49,11 +58,13 @@
   void next_page();
   void prev_page();
 
+  void resize(const Size& size);
+
 private:
   LevelMenu (const LevelMenu&);
   LevelMenu& operator= (const LevelMenu&);
 };
-
+
 #endif
 
 /* EOF */





reply via email to

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