All pastes #735687 Raw Edit

Miscellany

public cpp v1 · immutable
·published 2007-10-13 20:58 UTC
rendered paste body
        /* On redéfinie la position à l'écran de toutes les cases */        BCaseVector cases = map->Cases();        /* Hauteur de la case (et pas de l'image)*/        const int h = 100;        /* Hauteur de l'image (car il y a un petit espace blanc en haut de la case) */        const int H = 120;        /* Largeur de l'image */        const int w = 100;        /* Nombre de cases en abscisse */        int tW = map->Width();        /* Nombre de cases en ordonnée */        int tH = map->Height();        /* Coordonnées de départ (on est tout à gauche, et au milieu à peu près. */        int x = 0;        int y = (tW-1) * h/2;        /* Sauvegarde des coordonnées du début de la ligne en cours */        int bx = x;        int by = y;        Debug(W_DEBUG, "Start: TW=%d, tH=%d, x=%d, y=%d", tW, tH, x, y);        /* On commence la première ligne tout à gauche au milieu, et on vas vers la droite et on remonte progressivement vers le haut. */        for(BCaseVector::iterator casi = cases.begin(); casi != cases.end(); ++casi)                if(*casi)                {                               /* On attribue la position x, y à la case).                         * X() et Y() sont utile juste par rapport à l'affichage à l'écran                         * (ne pas s'en soucier).                         */                        dynamic_cast<ECase*>(*casi)->Image()->set(X() + x,                                                                  Y() + y);                        Debug(W_DEBUG, "x=%d, y=%d", x, y);                                /* Si est pas à la fin de la ligne */                        if((*casi)->X() < (map->Width()-1))                        {                                /* On avance vers la droite de la moitier de la largeur de la case */                                x = x + w/2;                                /* On avance vers le haut de la moitier de la hauteur de la case */                                y = y - h/2;                        }                        else                        {                                /* On prends les coordonnées de début de ligne précédente, et on ajoute                                 * en abscisse la moitié de la largeur, et en ordonnée la moitié de la                                 * hauteur de la case.                                 */                                x = bx + w/2;                                y = by + h/2;                                /* On sauvegarde l'etat */                                bx = x;                                by = y;                        }                 }