Gère la superposition des organismes
This commit is contained in:
parent
e8ea3a92a3
commit
b6d9069a5d
1 changed files with 15 additions and 1 deletions
|
@ -22,7 +22,21 @@ void Evenement::affichage(Univers * univers, const bool traits) noexcept {
|
||||||
// On génère le plateau pour l'affichage
|
// On génère le plateau pour l'affichage
|
||||||
int * plateau = new int[univers->m_taille_univers]();
|
int * plateau = new int[univers->m_taille_univers]();
|
||||||
for(auto it: univers->m_liste_univers[univers->ID].second) {
|
for(auto it: univers->m_liste_univers[univers->ID].second) {
|
||||||
|
// Vérification : un animal doit avoir la priorité sur
|
||||||
|
// un autre organisme dans l'affichage
|
||||||
|
if(plateau[it->position(univers->ID).first] == 0) { // pas de souci, aucun organisme à cette position
|
||||||
plateau[it->position(univers->ID).first] = it->ID;
|
plateau[it->position(univers->ID).first] = it->ID;
|
||||||
|
} else { // souci : un organisme est déjà présent
|
||||||
|
// on sait déjà qu'un animal ne se superpose pas sur
|
||||||
|
// une autre case animal, donc c'est soit :
|
||||||
|
// - un animal sur une case non-animal
|
||||||
|
// - l'inverse, un non-animal sur une case animal
|
||||||
|
// on utilises dynamic_cast<>() pour savoir le type de l'organisme
|
||||||
|
// cf. https://stackoverflow.com/a/27433140/15436737
|
||||||
|
if(dynamic_cast<Animal *>(it)) { // si c'est un animal
|
||||||
|
plateau[it->position(univers->ID).first] = it->ID;
|
||||||
|
} // sinon ne fait rien
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int largeur_affichage = univers->m_largeur * 4;
|
int largeur_affichage = univers->m_largeur * 4;
|
||||||
|
|
Reference in a new issue