-
Notifications
You must be signed in to change notification settings - Fork 0
/
Plateforme.h
163 lines (134 loc) · 6.33 KB
/
Plateforme.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#pragma once
#ifndef PLATEFORME_H
#define PLATEFORME_H
#include "ressources.h"
#include "Plateformes.h"
/// TODO : Changer le nom de PlateformeOptimisee à Plateforme
class PlateformeOptimisee : public Tile {
private:
TypePlateforme m_comportement;
public:
/// <summary>
/// Ne devrait être utilisé que pour faire un objet vide
/// </summary>
PlateformeOptimisee();
/// <summary>
/// Constructeur d'une tuile mettant par défaut le ratio de la texture à 1:1 (même si la sous-texture n'est pas carrée)
/// </summary>
/// <param name="texture">Référence de la texture utilisée (provenant souvent du niveau)</param>
/// <param name="noTuileDebutTexture">Numéro de sous-texture utilisé</param>
/// <param name="desiredSize">Taille de la tuile</param>
/// <param name="position">Position au coin supérieur gauche de la texture</param>
/// <param name="subTextureCount">Nombre de sous-textures</param>
/// <param name="textureRule">Règle appliquée à la texture</param>
/// <param name="subTextures">Les positions et tailles des sous-textures</param>
PlateformeOptimisee(const sf::Texture& texture, int noTuileDebutTexture, const sf::Vector2f& desiredSize, const sf::Vector2f& position, TextureRule textureRule, const std::vector<sf::FloatRect>& subTextures);
/// <summary>
/// Initialise une plateforme en incorporant un comportement à ladite plateforme
/// </summary>
/// <param name="texture">Référence de la texture utilisée (provenant probablement du niveau)</param>
/// <param name="noTuileDebutTexture">Numéro de sous-texture utilisé</param>
/// <param name="desiredSize">Taille de la tuile</param>
/// <param name="position">Position au coin supérieur gauche de la texture</param>
/// <param name="subTextureCount">Nombre de sous-textures</param>
/// <param name="textureRule">Règle appliquée à la texture</param>
/// <param name="subTextures">Les positions et tailles des sous-textures</param>
/// <param name="comportement">Comportement de la plateforme</param>
PlateformeOptimisee(const sf::Texture& texture, int noTuileDebutTexture, const sf::Vector2f& desiredSize, const sf::Vector2f& position, TextureRule textureRule, const std::vector<sf::FloatRect>& subTextures, TypePlateforme comportement);
/// <summary>
/// Initialise une plateforme en incorporant un comportement à la plateforme et en mettant une échelle autre que 1:1
/// </summary>
/// <param name="texture">Référence de la texture utilisée (provenant probablement du niveau)</param>
/// <param name="noTuileDebutTexture">Numéro de sous-texture utilisé</param>
/// <param name="desiredSize">Taille de la tuile</param>
/// <param name="position">Position au coin supérieur gauche de la texture</param>
/// <param name="subTextureCount">Nombre de sous-textures</param>
/// <param name="textureRule">Règle appliquée à la texture</param>
/// <param name="subTextures">Les positions et tailles des sous-textures</param>
/// <param name="scale">Échelle de la texture</param>
/// <param name="comportement">Comportement de la plateforme</param>
PlateformeOptimisee(const sf::Texture& texture, int noTuileDebutTexture, const sf::Vector2f& desiredSize, const sf::Vector2f& position, TextureRule textureRule, const std::vector<sf::FloatRect>& subTextures, const sf::Vector2f& scale, TypePlateforme comportement);
/// <summary>
/// Retourne le comportement de la plateforme
/// </summary>
TypePlateforme comportement() const;
/// <summary>
/// Change le comportement de la plateforme
/// </summary>
/// <param name="nouvComportement">Nouveau comportement donné à la plateforme</param>
void comportement(TypePlateforme nouvComportement);
/// <summary>
/// Permet d'accéder aux objets polymorphiques PlateformeOptimisee depuis le niveau
/// </summary>
std::unique_ptr<Tile> clone() const override;
};
inline PlateformeOptimisee::PlateformeOptimisee() : Tile(), m_comportement{ TypePlateforme::solide }
{
}
inline PlateformeOptimisee::PlateformeOptimisee(const sf::Texture& texture, int noTuileDebutTexture, const sf::Vector2f& desiredSize, const sf::Vector2f& position, TextureRule textureRule, const std::vector<sf::FloatRect>& subTextures)
: Tile{ texture, noTuileDebutTexture,desiredSize, position, textureRule, subTextures }, m_comportement{ TypePlateforme::solide }
{
}
inline PlateformeOptimisee::PlateformeOptimisee(const sf::Texture& texture, int noTuileDebutTexture, const sf::Vector2f& desiredSize, const sf::Vector2f& position, TextureRule textureRule, const std::vector<sf::FloatRect>& subTextures, TypePlateforme comportement)
: Tile{ texture, noTuileDebutTexture, desiredSize, position, textureRule, subTextures }, m_comportement{ comportement }
{
}
inline PlateformeOptimisee::PlateformeOptimisee(const sf::Texture& texture, int noTuileDebutTexture, const sf::Vector2f& desiredSize, const sf::Vector2f& position, TextureRule textureRule, const std::vector<sf::FloatRect>& subTextures, const sf::Vector2f& scale, TypePlateforme comportement)
: Tile{ texture, noTuileDebutTexture, desiredSize, position, textureRule, scale, subTextures }, m_comportement{ comportement }
{
}
inline TypePlateforme PlateformeOptimisee::comportement() const
{
return m_comportement;
}
inline void PlateformeOptimisee::comportement(TypePlateforme nouvComportement)
{
m_comportement = nouvComportement;
}
inline std::unique_ptr<Tile> PlateformeOptimisee::clone() const
{
return std::make_unique<PlateformeOptimisee>(*this);
}
class Plateforme {
public:
bool touche{ false };
bool visible{ true };
sf::Sprite sprite{};
TypePlateforme comportement{};
Plateforme() = default;
sf::Vector2f positionSprite() const
{
return sprite.getPosition();
}
sf::Vector2f coinSpriteDroitHaut() const
{
return sprite.getPosition() + sf::Vector2f(getWidth(sprite), 0.f);
}
sf::Vector2f coinSpriteGaucheBas() const
{
return sprite.getPosition() + sf::Vector2f(0.f, getHeight(sprite));
}
sf::Vector2f coinSpriteGaucheHaut() const
{
return sprite.getPosition();
}
sf::Vector2f coinSpriteDroitBas() const
{
return sprite.getPosition() + sf::Vector2f(getWidth(sprite), getHeight(sprite));
}
};
struct ObjetADessiner {
std::vector <sf::Sprite> arrierePlan;
//std::vector <Plateforme> avantPlan;
Niveau avantPlan;
sf::Sprite joueur;
std::vector <sf::Text> hud;
Langue langue;
sf::Color couleur;
sf::RectangleShape ecranNoir;
std::vector<sf::Texture> textures;
sf::View camera;
sf::Font police;
PositionJeu positionDansJeu;
};
#endif