def removeTile(self, coords): # Метод удаления тайлов в текущих координатах currentLayer = self.scene().LAYERS[int( self.PROXY.LAYER)] # Текущий слой pointToRemove = adjustToTilesize( coords, self.PROXY.SIZE) # Корректируем координаты for y in range(0, self.PROXY.SIZE, self.BASESIZE): for x in range(0, self.PROXY.SIZE, self.BASESIZE): tile = currentLayer['{}:{}'.format(pointToRemove.x() + x, pointToRemove.y() + y)] if tile: currentLayer.remove(tile) self.futureScenes.clear() # Очищаем контейнер будущих сцен
def placeTile(self, coords): # Метод размещает текущий активный тайл на текущей сцене в координатах coords if self.PROXY.TILE: # Размещаем тайл только при наличии этого тайла в буфере newTiles = [] currentLayer = self.scene().LAYERS[int(self.PROXY.LAYER)] for TILE in self.PROXY.TILE: pointToPlace = adjustToTilesize( coords, self.PROXY.SIZE) # Корректируем координаты curX = TILE.x() + pointToPlace.x() curY = TILE.y() + pointToPlace.y() oldTile = currentLayer['{}:{}'.format(int(curX), int(curY))] if oldTile: if oldTile != TILE: currentLayer.remove(oldTile) newTiles.append( TILE.duplicate(curX, curY, self.PROXY.LAYER)) else: newTiles.append( TILE.duplicate(curX, curY, self.PROXY.LAYER)) self.futureScenes.clear() # Очищаем контейнер будущих сцен self.scene().placeTiles(newTiles) # Передаем тайлы сцене
def refresh(self): # Метод обновления сцены # Обновляем положение рамки выбора тайла self.setSelectorPosition(adjustToTilesize(self.selectorCoords, self.PROXY.SIZE))
def move(self, coords, size): # Метод перемещения курсора. Меняет позицию в зависимости переданных координат и текущего размера тайла self.setPos(adjustToTilesize(coords, size))
def getTilesInRect(self, coords): # Метод возвращает список тайлов, которые пересекаются с прямоугольником размером с текущий размер тайла correctedCoords = adjustToTilesize(coords, self.PROXY.SIZE) rectangleToUse = QRectF(QPointF(correctedCoords), QSizeF(self.PROXY.SIZE, self.PROXY.SIZE)) return self.scene().items(rectangleToUse)