Cytopia  0.3
A city building simulation game
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Camera.hxx
Go to the documentation of this file.
1 #ifndef CAMERA_HXX_
2 #define CAMERA_HXX_
3 
4 #include "Point.hxx"
5 #include "../../util/Singleton.hxx"
6 
7 #include <SDL.h>
8 
9 class Camera : public Singleton<Camera>
10 {
11  friend Singleton;
12 
13 public:
18  void centerScreenOnPoint(const Point &isoCoordinates);
19 
24 
28  void increaseZoomLevel();
29 
33  void decreaseZoomLevel();
34 
35  inline void changeZoomLevel(bool inc) { inc ? increaseZoomLevel() : decreaseZoomLevel(); }
36 
43  void setPinchDistance(float pinchDistance, int isoX, int isoY);
44 
48  void moveCamera(int xOffset, int yOffset);
49  void canMove(bool move) { m_canMove = move; }
50 
51  const SDL_Point &cameraOffset() const noexcept;
52  const double &zoomLevel() const noexcept;
53  const SDL_Point &tileSize() const noexcept;
54 
55  void canScale(bool value) { m_canScale = value; }
56 
57 private:
58  Camera() = default;
59  ~Camera() = default;
60 
61  float m_PinchDistance = 0.f;
62  SDL_Point m_TileSize{32, 16};
63  SDL_Point m_CameraOffset{0, 0};
64  double m_ZoomLevel = 1.0;
65  bool m_canScale = true;
66  bool m_canMove = true;
68 };
69 
70 #endif
Camera::m_canScale
bool m_canScale
Definition: Camera.hxx:65
Camera::centerScreenOnMapCenter
void centerScreenOnMapCenter()
Centers camera on the middle of the map.
Definition: Camera.cxx:75
Camera
Definition: Camera.hxx:9
Camera::m_ZoomLevel
double m_ZoomLevel
the current zoom level of the camera
Definition: Camera.hxx:64
Camera::moveCamera
void moveCamera(int xOffset, int yOffset)
Move the camera in the given direction.
Definition: Camera.cxx:82
Camera::m_PinchDistance
float m_PinchDistance
Definition: Camera.hxx:61
Camera::Singleton
friend Singleton
Definition: Camera.hxx:11
Camera::~Camera
~Camera()=default
Camera::increaseZoomLevel
void increaseZoomLevel()
Increases the zoom level of the camera.
Definition: Camera.cxx:6
Camera::m_CameraOffset
SDL_Point m_CameraOffset
Definition: Camera.hxx:63
Camera::decreaseZoomLevel
void decreaseZoomLevel()
Decreases the zoom level of the camera.
Definition: Camera.cxx:19
Camera::changeZoomLevel
void changeZoomLevel(bool inc)
Definition: Camera.hxx:35
Camera::setPinchDistance
void setPinchDistance(float pinchDistance, int isoX, int isoY)
Sets the pinch distance for touch screens.
Definition: Camera.cxx:32
Camera::m_TileSize
SDL_Point m_TileSize
Definition: Camera.hxx:62
Camera::canMove
void canMove(bool move)
Definition: Camera.hxx:49
Camera::zoomLevel
const double & zoomLevel() const noexcept
Definition: Camera.cxx:97
Singleton
Abstract Singleton implementation.
Definition: Singleton.hxx:8
Camera::m_CenterIsoCoordinates
Point m_CenterIsoCoordinates
Definition: Camera.hxx:67
Camera::centerScreenOnPoint
void centerScreenOnPoint(const Point &isoCoordinates)
Centers camera on given isometric coordinates.
Definition: Camera.cxx:56
Point
Definition: Point.hxx:7
Camera::m_canMove
bool m_canMove
Definition: Camera.hxx:66
Camera::Camera
Camera()=default
Camera::cameraOffset
const SDL_Point & cameraOffset() const noexcept
Definition: Camera.cxx:95
Camera::canScale
void canScale(bool value)
Definition: Camera.hxx:55
Camera::tileSize
const SDL_Point & tileSize() const noexcept
Definition: Camera.cxx:99
Point.hxx