supertux
camera.hpp
1 // SuperTux
2 // Copyright (C) 2018 Ingo Ruhnke <grumbel@gmail.com>
3 // 2006 Christoph Sommer <christoph.sommer@2006.expires.deltadevelopment.de>
4 //
5 // This program is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program. If not, see <http://www.gnu.org/licenses/>.
17 
18 #ifndef HEADER_SUPERTUX_WORLDMAP_CAMERA_HPP
19 #define HEADER_SUPERTUX_WORLDMAP_CAMERA_HPP
20 
21 #include "math/vector.hpp"
22 
23 namespace worldmap {
24 
25 class WorldMapSector;
26 
27 class Camera
28 {
29 public:
30  explicit Camera(WorldMapSector& worldmap_sector);
31 
32  void update(float dt_sec);
33 
34  void pan();
35  bool is_panning() const { return m_panning; }
36 
37  Vector get_offset() const { return m_camera_offset; }
38 
39 private:
40  Vector get_camera_pos_for_tux() const;
41  void clamp_camera_position(Vector& c) const;
42 
43 private:
44  WorldMapSector& m_worldmap_sector;
45  Vector m_camera_offset;
46 
48  Vector m_pan_startpos;
49  float m_pan_time_full;
50  float m_pan_time_remaining;
51  bool m_panning;
52 
53 private:
54  Camera(const Camera&) = delete;
55  Camera& operator=(const Camera&) = delete;
56 };
57 
58 } // namespace worldmap
59 
60 #endif
61 
62 /* EOF */
Represents one of (potentially) multiple, separate parts of a WorldMap.
Definition: worldmap_sector.hpp:39
Definition: camera.hpp:27
Definition: object_settings.hpp:32