Massive copyright update. I'm sorry if I'm crediting Matze for something he didn...
[supertux.git] / src / gui / menu.hpp
index 88da108..0357c03 100644 (file)
@@ -1,7 +1,7 @@
 //  $Id$
-// 
+//
 //  SuperTux
-//  Copyright (C) 2004 Tobias Glaesser <tobi.web@gmx.de>
+//  Copyright (C) 2006 Matthias Braun <matze@braunis.de>
 //
 //  This program is free software; you can redistribute it and/or
 //  modify it under the terms of the GNU General Public License
 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 //  GNU General Public License for more details.
-// 
+//
 //  You should have received a copy of the GNU General Public License
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
 #ifndef SUPERTUX_MENU_H
 #define SUPERTUX_MENU_H
 
 #include <vector>
+#include <memory>
 #include <set>
 #include <string>
 #include <utility>
@@ -89,12 +91,13 @@ private:
   static std::vector<Menu*> last_menus;
   static Menu* current_;
   
-  static void push_current(Menu* pmenu);
   static void pop_current();
   
 public:
   /** Set the current menu, if pmenu is NULL, hide the current menu */
   static void set_current(Menu* pmenu);
+
+  static void push_current(Menu* pmenu); 
   
   /** Return the current active menu or NULL if none is active */
   static Menu* current()
@@ -121,8 +124,8 @@ private:
   int hit_item;
   
   // position of the menu (ie. center of the menu, not top/left)
-  int pos_x;
-  int pos_y;
+  float pos_x;
+  float pos_y;
   
   /** input event for the menu (up, down, left, right, etc.) */
   MenuAction menuaction;
@@ -176,7 +179,7 @@ public:
   void set_active_item(int id);
   
   void draw(DrawingContext& context);  
-  void set_pos(int x, int y, float rw = 0, float rh = 0);
+  void set_pos(float x, float y, float rw = 0, float rh = 0);
   
   void event(const SDL_Event& event);
 
@@ -184,8 +187,8 @@ public:
 
 protected:
   void additem(MenuItem* pmenu_item);  
-  int get_width() const;
-  int get_height() const;
+  float get_width() const;
+  float get_height() const;
 
 private:
   void check_controlfield_change_event(const SDL_Event& event);  
@@ -193,12 +196,12 @@ private:
   Uint32 effect_ticks;
   int arrange_left;
   int active_item;
-};
 
-extern Surface* checkbox;
-extern Surface* checkbox_checked;
-extern Surface* back;
-extern Surface* arrow_left;
-extern Surface* arrow_right;
+  std::auto_ptr<Surface> checkbox;
+  std::auto_ptr<Surface> checkbox_checked;
+  std::auto_ptr<Surface> back;
+  std::auto_ptr<Surface> arrow_left;
+  std::auto_ptr<Surface> arrow_right;
+};
 
 #endif