#303: Typo fixes from mathnerd314
[supertux.git] / src / object / camera.hpp
index 260a612..061fe4d 100644 (file)
@@ -16,7 +16,6 @@
 //  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_CAMERA_H
 #define SUPERTUX_CAMERA_H
 
@@ -38,6 +37,7 @@ class Lisp;
 class Sector;
 class Path;
 class PathWalker;
+class CameraConfig;
 
 class Camera : public GameObject, public Serializable, public ScriptInterface
 {
@@ -50,18 +50,15 @@ public:
   /// write camera mode to a lisp file
   virtual void write(lisp::Writer& writer);
 
-  /// reset camera postion
-  virtual void reset(const Vector& tuxpos);
-  virtual void reset_kd(const Vector& tuxpos);
+  /// reset camera position
+  void reset(const Vector& tuxpos);
 
   /** return camera position */
   const Vector& get_translation() const;
 
   virtual void update(float elapsed_time);
 
-  virtual void draw(DrawingContext& )
-  {
-  }
+  virtual void draw(DrawingContext& );
 
   virtual void expose(HSQUIRRELVM vm, SQInteger table_idx);
   virtual void unexpose(HSQUIRRELVM vm, SQInteger table_idx);
@@ -81,24 +78,32 @@ public:
    */
   void scroll_to(const Vector& goal, float scrolltime);
 
+  void reload_config();
+
   enum CameraMode
   {
     NORMAL, AUTOSCROLL, SCROLLTO, MANUAL
   };
   CameraMode mode;
 
+  /**
+   * get the coordinates of the point directly in the center of this camera
+   */
+  Vector get_center() const;
+
 private:
   void update_scroll_normal(float elapsed_time);
-  void update_scroll_normal_kd(float elapsed_time);
-  void update_scroll_normal_exp(float elapsed_time);
   void update_scroll_autoscroll(float elapsed_time);
   void update_scroll_to(float elapsed_time);
   void keep_in_bounds(Vector& vector);
   void shake();
 
-  enum LeftRightScrollChange
-  {
-    NONE, LEFT, RIGHT
+  /**
+   * The camera basically provides lookahead on the left or right side
+   * or is undecided.
+   */
+  enum LookaheadMode {
+    LOOKAHEAD_NONE, LOOKAHEAD_LEFT, LOOKAHEAD_RIGHT
   };
 
   Vector translation;
@@ -106,8 +111,11 @@ private:
   Sector* sector;
 
   // normal mode
-  bool do_backscrolling;
-  LeftRightScrollChange scrollchange;
+  LookaheadMode lookahead_mode;
+  float changetime;
+  Vector lookahead_pos;
+  Vector peek_pos;
+  Vector cached_translation;
 
   // autoscroll mode
   std::auto_ptr<Path> autoscroll_path;
@@ -124,6 +132,8 @@ private:
   Vector scroll_goal;
   float scroll_to_pos;
   float scrollspeed;
+
+  CameraConfig *config;
 };
 
 #endif /*SUPERTUX_CAMERA_H*/