r-type  0.0.0
R-Type main
Loading...
Searching...
No Matches
Game.hpp
Go to the documentation of this file.
1///
2/// @file Game.hpp
3/// @brief This file contains the solo Game scene
4/// @namespace gme
5///
6
7#pragma once
8
9#include <memory>
10
12#include "Interfaces/IAudio.hpp"
13
14namespace gme
15{
16
17 ///
18 /// @class Game
19 /// @brief Game solo scene
20 /// @namespace gme
21 ///
22 class Game final : public eng::AScene
23 {
24 public:
25 Game(eng::id assignedId, const std::shared_ptr<eng::IRenderer> &renderer,
26 const std::shared_ptr<eng::IAudio> &audio, bool &showDebug, int skinIndex = 0,
27 const std::string &playerName = "Player");
28 ~Game() override = default;
29
30 Game(const Game &other) = delete;
31 Game &operator=(const Game &other) = delete;
32 Game(Game &&other) = delete;
33 Game &operator=(Game &&other) = delete;
34
35 void update(float dt, const eng::WindowSize &size) override;
36 void event(const eng::Event &event) override;
37 bool &playMusic() { return m_playMusic; }
38
39 private:
41 std::pair<ecs::Entity, ecs::Entity> createPipePair(ecs::Registry &registry, float x, float gapY) const;
42 void resetGame();
43 bool checkCircleCollision(float x1, float y1, float r1, float x2, float y2, float r2) const;
44 bool checkCircleRectCollision(float circleX, float circleY, float circleR, float rectX, float rectY, float rectW, float rectH) const;
45 void checkCollisions(ecs::Registry &registry);
46 void checkScore(ecs::Registry &registry);
47 void drawDebugRectangles(ecs::Registry &registry) const;
48
49 const std::shared_ptr<eng::IRenderer> &m_renderer;
50 const std::shared_ptr<eng::IAudio> &m_audio;
51 std::unordered_map<eng::Key, bool> m_keysPressed;
58 std::vector<std::pair<ecs::Entity, ecs::Entity>> m_pipes;
59 std::vector<bool> m_pipeScored;
61 bool m_playMusic = false;
62 bool m_gameOver = false;
63 bool m_gameOverShown = false;
64 int m_score = 0;
66 std::string m_playerName;
67 }; // class Game
68} // namespace gme
This file contains the Audio interface.
Class for managing entities and their components.
Definition Registry.hpp:25
Abstract class for scene.
Definition IScene.hpp:52
Game solo scene.
Definition Game.hpp:23
std::pair< ecs::Entity, ecs::Entity > createPipePair(ecs::Registry &registry, float x, float gapY) const
Definition game.cpp:319
ecs::Entity m_playerEntity
Definition Game.hpp:52
bool m_gameOverShown
Definition Game.hpp:63
Game(eng::id assignedId, const std::shared_ptr< eng::IRenderer > &renderer, const std::shared_ptr< eng::IAudio > &audio, bool &showDebug, int skinIndex=0, const std::string &playerName="Player")
Definition game.cpp:42
void update(float dt, const eng::WindowSize &size) override
Definition game.cpp:178
void resetGame()
Definition game.cpp:354
Game & operator=(Game &&other)=delete
bool & playMusic()
Definition Game.hpp:37
const std::shared_ptr< eng::IAudio > & m_audio
Definition Game.hpp:50
std::unordered_map< eng::Key, bool > m_keysPressed
Definition Game.hpp:51
int m_skinIndex
Definition Game.hpp:65
void checkCollisions(ecs::Registry &registry)
Definition game.cpp:426
void event(const eng::Event &event) override
Definition game.cpp:278
bool m_playMusic
Definition Game.hpp:61
const std::shared_ptr< eng::IRenderer > & m_renderer
Definition Game.hpp:49
Game(Game &&other)=delete
~Game() override=default
ecs::Entity createPlayer(ecs::Registry &registry)
Definition game.cpp:303
std::string m_playerName
Definition Game.hpp:66
bool checkCircleCollision(float x1, float y1, float r1, float x2, float y2, float r2) const
Definition game.cpp:404
Game(const Game &other)=delete
Game & operator=(const Game &other)=delete
ecs::Entity m_flapSound
Definition Game.hpp:55
void checkScore(ecs::Registry &registry)
Definition game.cpp:475
ecs::Entity m_playerNameEntity
Definition Game.hpp:53
ecs::Entity m_looseSound
Definition Game.hpp:56
std::vector< std::pair< ecs::Entity, ecs::Entity > > m_pipes
Definition Game.hpp:58
bool checkCircleRectCollision(float circleX, float circleY, float circleR, float rectX, float rectY, float rectW, float rectH) const
Definition game.cpp:414
void drawDebugRectangles(ecs::Registry &registry) const
Definition game.cpp:513
std::vector< bool > m_pipeScored
Definition Game.hpp:59
bool m_gameOver
Definition Game.hpp:62
ecs::Entity m_scoreEntity
Definition Game.hpp:57
int m_score
Definition Game.hpp:64
bool & m_showDebug
Definition Game.hpp:60
ecs::Entity m_looseText
Definition Game.hpp:54
This file contains the IScene class.
std::uint32_t Entity
Definition Entity.hpp:13
unsigned int id
Definition IScene.hpp:20