-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgraphicsplateau.h
More file actions
151 lines (130 loc) · 4.32 KB
/
graphicsplateau.h
File metadata and controls
151 lines (130 loc) · 4.32 KB
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
#ifndef GRAPHICSPLATEAU_H
#define GRAPHICSPLATEAU_H
#include <QGraphicsScene>
#include "menuplacerinsecte.h"
#include "plateau.h"
/**
* @brief Classe représentant un plateau graphique dans l'interface utilisateur.
*
* La classe `GraphicsPlateau` permet de gérer l'affichage et les interactions
* graphiques avec le plateau du jeu. Elle intègre la logique des cases et
* des insectes, et gère les événements liés à la sélection et au placement.
*/
class GraphicsPlateau : public QGraphicsScene
{
Q_OBJECT
friend class MenuPlacerInsecte;
public:
/**
* @brief Constructeur de la classe GraphicsPlateau.
*
* Initialise le plateau graphique et connecte les cases logiques
* à leurs représentations graphiques.
*
* @param plateau Pointeur vers l'objet logique du plateau.
* @param parent Objet parent (par défaut nullptr).
*/
GraphicsPlateau(Plateau* plateau, QObject *parent = nullptr);
/**
* @brief Retourne la scène graphique associée au plateau.
*
* @return QGraphicsScene* Pointeur vers la scène graphique.
*/
QGraphicsScene* get_scene() { return this; }
/**
* @brief Pointeur vers l'objet logique du plateau associé.
*/
Plateau* plateau;
/**
* @brief Place un insecte sur une case graphique.
*
* Met à jour l'apparence de la case pour refléter la présence d'un insecte.
*
* @param c Pointeur vers la case graphique.
* @param joueur Pointeur vers le joueur qui contrôle l'insecte.
*/
void placer_insecte(GraphicsCase* c, Joueur* joueur);
/**
* @brief Déplace un insecte d'une case graphique à une autre.
*
* Met à jour les cases source et destination pour refléter le déplacement.
*
* @param depart Pointeur vers la case graphique de départ.
* @param arrivee Pointeur vers la case graphique d'arrivée.
*/
void deplacer_insecte(GraphicsCase* depart, GraphicsCase* arrivee);
/**
* @brief Retire un insecte d'une case graphique.
*
* Réinitialise l'apparence de la case.
*
* @param c Pointeur vers la case graphique.
*/
void retirer_insecte(GraphicsCase* c);
/**
* @brief Ajoute une case graphique associée à une case logique.
*
* @param c Pointeur vers la case logique.
*/
void add_case(Case* c);
/**
* @brief Réinitialise la sélection de la case actuelle.
*/
void reset_case_selectionnee() { case_selectionnee = nullptr; }
/**
* @brief Affiche les emplacements possibles pour placer un insecte.
*
* Met en surbrillance les cases où un joueur peut placer un insecte
* du type spécifié.
*
* @param joueur Pointeur vers le joueur qui veut placer un insecte.
* @param type Type de l'insecte à placer.
*/
void afficher_placements(Joueur* joueur, Type::Type type);
protected:
/**
* @brief Gère l'événement de clic souris sur la scène graphique.
*
* Permet de sélectionner une case, de déplacer un insecte ou de placer un insecte.
*
* @param mouseEvent Pointeur vers l'événement de clic souris.
*/
virtual void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) override;
private:
/**
* @brief Pointeur vers la case graphique actuellement sélectionnée.
*/
class GraphicsCase* case_selectionnee = nullptr;
/**
* @brief Surbrille un ensemble de cases.
*
* Modifie leur couleur et leur profondeur (`zvalue`).
*
* @param cases Vecteur des cases à surbriller.
* @param color Couleur de la surbrillance.
* @param zvalue Profondeur des cases surbrillées.
*/
void surbriller_cases(std::vector<Case*>& cases, QColor color, qreal zvalue);
/**
* @brief Liste des cases où un mouvement est possible.
*/
std::vector<Case*> move_possibles;
/**
* @brief Type de l'insecte que le joueur veut placer.
*/
Type::Type veut_placer_type;
/**
* @brief Pointeur vers le joueur qui veut placer un insecte.
*/
Joueur* veut_placer_joueur;
/**
* @brief Indique si un placement d'insecte est en cours.
*/
bool veut_placer;
signals:
/**
* @brief Signal émis lorsqu'un placement a été effectué.
*/
void placement();
};
#endif // GRAPHICSPLATEAU_H