PCG-FPS  v2 m0.22.4
Simple First Person Shooter with Procedurally Generated Level
LevelManager.h
Go to the documentation of this file.
1 #ifndef SKR_FPS2_RENDERER_OPENGL_LEVELMANAGER_H
2 #define SKR_FPS2_RENDERER_OPENGL_LEVELMANAGER_H
3 
4 #include "..\..\pch.h"
5 
6 #include <vector>
7 
8 #include "RoomGeometry.h"
9 
10 namespace skr
11 {
12 namespace fps2
13 {
14 namespace Renderer
15 {
16 namespace OpenGL
17 {
18 
21 
23  {
24  private:
27  : _initialPosition(glm::vec3(0.0f, 0.0f, 0.0f))
28  {};
29 
31  LevelManager(const LevelManager&) = delete;
32 
35 
36  glm::vec3 _initialPosition;
37 
38  public:
39  std::vector<RoomGeometry> _rooms;
40 
44  {
45  static LevelManager instance;
46  return instance;
47  }
48 
52  {
53  _rooms.push_back(r);
54  }
55 
58  void SetInitialPosition(glm::vec3 pos)
59  {
60  _initialPosition = pos;
61  }
62 
65  glm::vec3 GetInitialPosition()
66  {
67  return _initialPosition;
68  }
69 
73  std::vector<skr::pcg::Room> GetAdjecentRooms(skr::pcg::Room room)
74  {
75  std::vector<skr::pcg::Room> rooms;
76 
77  for (auto& ar : room._adjecentRooms)
78  {
79  for (auto& r : _rooms)
80  {
81  if (ar._center == r._room._center)
82  rooms.push_back(r._room);
83  }
84  }
85  return rooms;
86  }
87 
91  std::vector<skr::pcg::Room> GetAdjecentRooms(RoomGeometry room)
92  {
93  return GetAdjecentRooms(room._room);
94  }
95 
99  std::vector<RoomGeometry> GetAdjecentRoomGeometries(skr::pcg::Room room)
100  {
101  std::vector<RoomGeometry> rooms;
102 
103  for (auto& ar : room._adjecentRooms)
104  {
105  for (auto& r : _rooms)
106  {
107  if (ar._center == r._room._center)
108  rooms.push_back(r);
109  }
110  }
111 
112  return rooms;
113  }
114 
118  std::vector<RoomGeometry> GetAdjecentRoomGeometries(RoomGeometry room)
119  {
120  std::vector<RoomGeometry> rooms;
121 
122  for (auto& ar : room._room._adjecentRooms)
123  {
124  for (auto& r : _rooms)
125  {
126  if (ar._center == r._room._center) {
127  rooms.push_back(r);
128  }
129  }
130  }
131 
132  return rooms;
133  }
134  };
135 
136 }
137 }
138 }
139 }
140 
141 #endif // !SKR_FPS2_RENDERER_OPENGL_LEVELMANAGER_H
142 
skr::fps2::Renderer::OpenGL::LevelManager::SetInitialPosition
void SetInitialPosition(glm::vec3 pos)
sets initial position
Definition: LevelManager.h:58
skr::fps2::Renderer::OpenGL::LevelManager::GetAdjecentRoomGeometries
std::vector< RoomGeometry > GetAdjecentRoomGeometries(RoomGeometry room)
get rooms adjecent to given room
Definition: LevelManager.h:118
skr::fps2::Renderer::OpenGL::LevelManager::_initialPosition
glm::vec3 _initialPosition
initial player position
Definition: LevelManager.h:36
skr::fps2::Renderer::OpenGL::LevelManager::GetAdjecentRooms
std::vector< skr::pcg::Room > GetAdjecentRooms(skr::pcg::Room room)
get rooms adjecent to given room
Definition: LevelManager.h:73
skr::fps2::Renderer::OpenGL::LevelManager::AddRoom
void AddRoom(RoomGeometry r)
add a room
Definition: LevelManager.h:51
skr::fps2::Renderer::OpenGL::LevelManager::operator=
LevelManager operator=(const LevelManager &)=delete
copy assignment operator is deleted
skr::fps2::Renderer::OpenGL::LevelManager
holds all rooms in a central place
Definition: LevelManager.h:23
skr::fps2::Renderer::OpenGL::LevelManager::GetAdjecentRoomGeometries
std::vector< RoomGeometry > GetAdjecentRoomGeometries(skr::pcg::Room room)
get rooms adjecent to given room
Definition: LevelManager.h:99
skr::fps2::Renderer::OpenGL::LevelManager::LevelManager
LevelManager()
default constructor
Definition: LevelManager.h:26
skr::fps2::Renderer::OpenGL::RoomGeometry::_room
skr::pcg::Room _room
room from procedural generation
Definition: RoomGeometry.h:27
skr::fps2::Renderer::OpenGL::LevelManager::_rooms
std::vector< RoomGeometry > _rooms
list of rooms
Definition: LevelManager.h:39
skr::fps2::Renderer::OpenGL::RoomGeometry
holds geometry of a room
Definition: RoomGeometry.h:24
skr
Definition: AssetPath.h:10
skr::fps2::Renderer::OpenGL::LevelManager::LevelManager
LevelManager(const LevelManager &)=delete
copy constructor is deleted
skr::fps2::Renderer::OpenGL::LevelManager::GetInitialPosition
glm::vec3 GetInitialPosition()
gets initial player position
Definition: LevelManager.h:65
skr::fps2::Renderer::OpenGL::LevelManager::GetAdjecentRooms
std::vector< skr::pcg::Room > GetAdjecentRooms(RoomGeometry room)
get rooms adjecent to given room
Definition: LevelManager.h:91
skr::fps2::Renderer::OpenGL::LevelManager::GetInstance
static LevelManager & GetInstance()
Get only instance of LevelManger Implements Scott Meyers' singleton pattern.
Definition: LevelManager.h:43
RoomGeometry.h