Fix regressions to tile usage count

This commit is contained in:
GriffinR 2025-08-07 23:46:34 -04:00
parent 0b057a08a4
commit b537375b15
2 changed files with 13 additions and 4 deletions

View File

@ -94,7 +94,7 @@ public:
uint16_t firstTileId() const;
uint16_t lastTileId() const;
bool containsTileId(uint16_t tileId) const { return tileId > firstTileId() && tileId <= lastTileId(); }
bool containsTileId(uint16_t tileId) const { return tileId >= firstTileId() && tileId <= lastTileId(); }
int numTiles() const { return m_tiles.length(); }
int maxTiles() const;

View File

@ -1234,17 +1234,26 @@ void TilesetEditor::countMetatileUsage() {
}
void TilesetEditor::countTileUsage() {
// check primary tiles
this->tileSelector->usedTiles.resize(Project::getNumTilesTotal());
this->tileSelector->usedTiles.fill(0);
auto countTilesetTileUsage = [this](Tileset *searchTileset) {
// Count usage of our search tileset's tiles (in itself, and in any tilesets it gets paired with).
QSet<QString> tilesetNames = this->project->getPairedTilesetLabels(searchTileset);
tilesetNames.insert(searchTileset->name);
QSet<Tileset*> tilesets;
// For the currently-loaded tilesets, make sure we use the Tileset Editor's versions
// (which may contain unsaved changes) and not the versions from the project.
tilesetNames.remove(this->primaryTileset->name);
tilesetNames.remove(this->secondaryTileset->name);
tilesets.insert(this->primaryTileset);
tilesets.insert(this->secondaryTileset);
for (const auto &tilesetName : tilesetNames) {
Tileset *tileset = this->project->getTileset(tilesetName);
if (!tileset) continue;
if (tileset) tilesets.insert(tileset);
}
for (const auto &tileset : tilesets) {
for (const auto &metatile : tileset->metatiles()) {
for (const auto &tile : metatile->tiles) {
if (searchTileset->containsTileId(tile.tileId)) {