Gère les warnings de pile pleine et vide la pile de vues suivantes

à chaque nouveaux zooms de zone
This commit is contained in:
HorlogeSkynet 2017-01-30 10:45:47 +01:00
parent e18d5a157c
commit 501603261e
3 changed files with 23 additions and 3 deletions

@ -153,3 +153,9 @@ Carte* depilerPilesCartes(PileCartes *const pileCartes)
return NULL;
}
}
inline void afficherWarningPile(sfRenderWindow *const window, const sfSprite *const renderSprite)
{
warningBox(window, renderSprite, "La carte précédente ne sera pas sauvegardée car la pile est pleine.");
}

@ -73,3 +73,12 @@ bool empilerPileCartes(PileCartes *const pileCartes, Carte *const carte);
* @return Procédure.
*/
Carte* depilerPilesCartes(PileCartes *const pileCartes);
/**
* @brief Afficher un simple warning de pile pleine...
*
* @param window Paramètre obligatoire pour l'affichage...
* @param renderSprite Paramètre obligatoire pour l'affichage...
* @return Procédure.
*/
void afficherWarningPile(sfRenderWindow *const window, const sfSprite *const renderSprite);

@ -186,7 +186,7 @@ ErrEnum controlePoints(sfRenderWindow *window, const char *cheminFichier, Mode m
// On empile cette carte dans la pile des cartes précédentes
if(!empilerPileCartes(&previous, carte))
{
/* AFFICHER UN MESSAGE CAR IMPOSSIBLE DE ZOOMER ??? */
afficherWarningPile(window, renderSprite);
break;
}
@ -198,11 +198,15 @@ ErrEnum controlePoints(sfRenderWindow *window, const char *cheminFichier, Mode m
// On convertit les pixels retournés en coordonnées géographiques...
conversionRec(&carre, &carte->pointHautGauche, &carte->pointBasDroite, &carte->pointCentral, carte->echelle);
// On calcule le zoom et l'échelles adaptés à la nouvelle zone
// On calcule le zoom et l'échelle adaptés à la nouvelle zone
getZoomEchelle(carte);
// ainsi qu'un nouveau point central !
calculPointCentral(carte);
// Si c'est un zoom sur une nouvelle zone, on vide la pile des zooms suivants
detruirePileCartes(&next);
initialiserPileCartes(&next);
}
else
@ -234,7 +238,7 @@ ErrEnum controlePoints(sfRenderWindow *window, const char *cheminFichier, Mode m
// L'utilisateur a demandé d'afficher la vue précédente / suivante. Donc on commence par empiler la vue actuelle dans la pile des suivantes / précédentes.
if(!empilerPileCartes((action == ACTION_ZOOM_NEXT ? &previous : &next), carte))
{
/* AFFICHER UN MESSAGE CAR IMPOSSIBLE DE ZOOMER ??? */
afficherWarningPile(window, renderSprite);
break;
}
@ -286,6 +290,7 @@ ErrEnum controlePoints(sfRenderWindow *window, const char *cheminFichier, Mode m
if(!empilerPileCartes(&previous, carte))
{
afficherWarningPile(window, renderSprite);
break;
}