Remove bogus assert
[supertux.git] / src / gui / mousecursor.hpp
index 49b9e8f..4aaa11d 100644 (file)
@@ -1,12 +1,10 @@
-//  $Id$
-//
 //  SuperTux
 //  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
-//  as published by the Free Software Foundation; either version 2
-//  of the License, or (at your option) any later version.
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
 //
 //  This program is distributed in the hope that it will be useful,
 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
 //  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.
+//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-#ifndef SUPERTUX_MOUSECURSOR_H
-#define SUPERTUX_MOUSECURSOR_H
+#ifndef HEADER_SUPERTUX_GUI_MOUSECURSOR_HPP
+#define HEADER_SUPERTUX_GUI_MOUSECURSOR_HPP
 
 #include <string>
+#include <vector>
 
-#include "video/surface.hpp"
+#include "video/surface_ptr.hpp"
 
 #define MC_STATES_NB 3
-enum {
+
+enum MouseCursorState
+{
   MC_NORMAL = 0,
   MC_CLICK,
   MC_LINK,
@@ -43,16 +42,15 @@ class DrawingContext;
 class MouseCursor
 {
 public:
-  /// Constructor of MouseCursor.
-  /** Expects an imagefile for the cursor and  the number of animation frames it contains. */
-  MouseCursor(std::string cursor_file);
+  MouseCursor(const std::string& cursor_file,
+              const std::string& cursor_click_file,
+              const std::string& cursor_link_file);
   ~MouseCursor();
-  /// Get MouseCursor state.
-  /** (MC_NORMAL, MC_CLICK, MC_LINK or MC_HIDE) */
-  int state();
+
   /// Set MouseCursor state.
   /** (MC_NORMAL, MC_CLICK, MC_LINK or MC_HIDE) */
-  void set_state(int nstate);
+  void set_state(MouseCursorState nstate);
+
   /// Define the middle of a MouseCursor.
   /** Useful for cross mouse cursor images in example. */
   void set_mid(int x, int y);
@@ -68,11 +66,19 @@ public:
   {        current_ = pcursor;      };
 
 private:
-  int mid_x, mid_y;
+  int m_mid_x;
+  int m_mid_y;
+  MouseCursorState m_state;
+  std::vector<SurfacePtr> m_cursor;
+
+private:
   static MouseCursor* current_;
-  int state_before_click;
-  int cur_state;
-  Surface* cursor;
+
+private:
+  MouseCursor(const MouseCursor&);
+  MouseCursor& operator=(const MouseCursor&);
 };
 
 #endif /*SUPERTUX_MOUSECURSOR_H*/
+
+/* EOF */