// Ajoute la tile aux coordonnées (dans la matrice de la map) inTileX/inTileY au bon endroit dans l'anneau void anneauQGraphicsItem::insererTile(QGraphicsPixmapItem *inTile, int inTileX, int inTileY, int inTileOrigineX, int inTileOrigineY) { // Calcule la position de la tile dans l'anneau int x=getTileColumn(inTileX, inTileOrigineX); int y=getTileLine(inTileY, inTileOrigineY); //qDebug() << "Tile inseree en:" << x << y; _data[y][x] =inTile; }
void KOrthogonalMap::setTilesLayer(U32 TileID, U16 LayerIndex, const std::vector<KTileStamp> &Stamp, const KOrthoLayer &Layer) { auto anchRow = getTileRow(TileID); auto anchCol = getTileColumn(TileID); for (auto it = Stamp.begin(); it != Stamp.end(); ++it) { if ((anchRow + it->row) < _kheight && (anchCol + it->col) < _kwidth) { // calculate id auto id = ((anchRow + it->row) * _kwidth) + (anchCol + it->col); setTileLayer(id, LayerIndex, Layer); } } }
void anneauQGraphicsItem::columnRemoved(int inColumnNum, int inTileOrigineX) { // Récupère le numéro de la colonne dans l'affichage int x =getTileColumn(inColumnNum, inTileOrigineX); // On regarde si on a supprimé la première ou la dernière colonne // si oui on met à jour les pointeurs de début/fin de l'anneau /*if(_firstColumn ==x) ++_firstColumn; else if(_lastColumn ==x) --_firstColumn; else qDebug() << "anneauQGraphicsItem::columnRemoved() > Warning: Suppression suspecte d'une colonne non situee a une extremite.";*/ // En principe, on ne supprimera que les colonnes situées tout à gauche ou tout à droite }
void KOrthogonalMap::getTilesLayer(U32 TileID, U16 LayerIndex, const std::vector<KTileStamp> &Stamp, std::vector<KOrthoLayer> &Output) { Output.clear(); auto anchRow = getTileRow(TileID); auto anchCol = getTileColumn(TileID); for (auto it = Stamp.begin(); it != Stamp.end(); ++it) { if ((anchRow + it->row) < _kheight && (anchCol + it->col) < _kwidth) { // calculate id auto id = ((anchRow + it->row) * _kwidth) + (anchCol + it->col); KOrthoLayer layer; if (getTileLayer(id, LayerIndex, layer)) { Output.push_back(layer); } } } }