Fix memory leak when creating new tileset
This commit is contained in:
parent
f989563cc0
commit
3bcdb1d728
1 changed files with 22 additions and 22 deletions
|
@ -1205,15 +1205,15 @@ void MainWindow::on_actionNew_Tileset_triggered() {
|
||||||
}
|
}
|
||||||
directory.mkdir(fullDirectoryPath);
|
directory.mkdir(fullDirectoryPath);
|
||||||
directory.mkdir(fullDirectoryPath + "/palettes");
|
directory.mkdir(fullDirectoryPath + "/palettes");
|
||||||
Tileset *newSet = new Tileset();
|
Tileset newSet;
|
||||||
newSet->name = createTilesetDialog->fullSymbolName;
|
newSet.name = createTilesetDialog->fullSymbolName;
|
||||||
newSet->tilesImagePath = fullDirectoryPath + "/tiles.png";
|
newSet.tilesImagePath = fullDirectoryPath + "/tiles.png";
|
||||||
newSet->metatiles_path = fullDirectoryPath + "/metatiles.bin";
|
newSet.metatiles_path = fullDirectoryPath + "/metatiles.bin";
|
||||||
newSet->metatile_attrs_path = fullDirectoryPath + "/metatile_attributes.bin";
|
newSet.metatile_attrs_path = fullDirectoryPath + "/metatile_attributes.bin";
|
||||||
newSet->is_secondary = createTilesetDialog->isSecondary ? "TRUE" : "FALSE";
|
newSet.is_secondary = createTilesetDialog->isSecondary ? "TRUE" : "FALSE";
|
||||||
int numMetaTiles = createTilesetDialog->isSecondary ? (Project::getNumTilesTotal() - Project::getNumTilesPrimary()) : Project::getNumTilesPrimary();
|
int numMetaTiles = createTilesetDialog->isSecondary ? (Project::getNumTilesTotal() - Project::getNumTilesPrimary()) : Project::getNumTilesPrimary();
|
||||||
QImage tilesImage(":/images/blank_tileset.png");
|
QImage tilesImage(":/images/blank_tileset.png");
|
||||||
editor->project->loadTilesetTiles(newSet, tilesImage);
|
editor->project->loadTilesetTiles(&newSet, tilesImage);
|
||||||
for(int i = 0; i < numMetaTiles; ++i) {
|
for(int i = 0; i < numMetaTiles; ++i) {
|
||||||
int tilesPerMetatile = projectConfig.getTripleLayerMetatilesEnabled() ? 12 : 8;
|
int tilesPerMetatile = projectConfig.getTripleLayerMetatilesEnabled() ? 12 : 8;
|
||||||
Metatile *mt = new Metatile();
|
Metatile *mt = new Metatile();
|
||||||
|
@ -1231,32 +1231,32 @@ void MainWindow::on_actionNew_Tileset_triggered() {
|
||||||
mt->encounterType = 0;
|
mt->encounterType = 0;
|
||||||
mt->terrainType = 0;
|
mt->terrainType = 0;
|
||||||
|
|
||||||
newSet->metatiles.append(mt);
|
newSet.metatiles.append(mt);
|
||||||
}
|
}
|
||||||
for(int i = 0; i < 16; ++i) {
|
for(int i = 0; i < 16; ++i) {
|
||||||
QList<QRgb> currentPal;
|
QList<QRgb> currentPal;
|
||||||
for(int i = 0; i < 16;++i) {
|
for(int i = 0; i < 16;++i) {
|
||||||
currentPal.append(qRgb(0,0,0));
|
currentPal.append(qRgb(0,0,0));
|
||||||
}
|
}
|
||||||
newSet->palettes.append(currentPal);
|
newSet.palettes.append(currentPal);
|
||||||
newSet->palettePreviews.append(currentPal);
|
newSet.palettePreviews.append(currentPal);
|
||||||
QString fileName = QString("%1.pal").arg(i, 2, 10, QLatin1Char('0'));
|
QString fileName = QString("%1.pal").arg(i, 2, 10, QLatin1Char('0'));
|
||||||
newSet->palettePaths.append(fullDirectoryPath+"/palettes/" + fileName);
|
newSet.palettePaths.append(fullDirectoryPath+"/palettes/" + fileName);
|
||||||
}
|
}
|
||||||
newSet->palettes[0][1] = qRgb(255,0,255);
|
newSet.palettes[0][1] = qRgb(255,0,255);
|
||||||
newSet->palettePreviews[0][1] = qRgb(255,0,255);
|
newSet.palettePreviews[0][1] = qRgb(255,0,255);
|
||||||
newSet->is_compressed = "TRUE";
|
newSet.is_compressed = "TRUE";
|
||||||
newSet->padding = "0";
|
newSet.padding = "0";
|
||||||
editor->project->saveTilesetTilesImage(newSet);
|
editor->project->saveTilesetTilesImage(&newSet);
|
||||||
editor->project->saveTilesetMetatiles(newSet);
|
editor->project->saveTilesetMetatiles(&newSet);
|
||||||
editor->project->saveTilesetMetatileAttributes(newSet);
|
editor->project->saveTilesetMetatileAttributes(&newSet);
|
||||||
editor->project->saveTilesetPalettes(newSet);
|
editor->project->saveTilesetPalettes(&newSet);
|
||||||
|
|
||||||
//append to tileset specific files
|
//append to tileset specific files
|
||||||
|
|
||||||
newSet->appendToHeaders(editor->project->root + "/data/tilesets/headers.inc", createTilesetDialog->friendlyName);
|
newSet.appendToHeaders(editor->project->root + "/data/tilesets/headers.inc", createTilesetDialog->friendlyName);
|
||||||
newSet->appendToGraphics(editor->project->root + "/data/tilesets/graphics.inc", createTilesetDialog->friendlyName, !createTilesetDialog->isSecondary);
|
newSet.appendToGraphics(editor->project->root + "/data/tilesets/graphics.inc", createTilesetDialog->friendlyName, !createTilesetDialog->isSecondary);
|
||||||
newSet->appendToMetatiles(editor->project->root + "/data/tilesets/metatiles.inc", createTilesetDialog->friendlyName, !createTilesetDialog->isSecondary);
|
newSet.appendToMetatiles(editor->project->root + "/data/tilesets/metatiles.inc", createTilesetDialog->friendlyName, !createTilesetDialog->isSecondary);
|
||||||
if(!createTilesetDialog->isSecondary) {
|
if(!createTilesetDialog->isSecondary) {
|
||||||
this->ui->comboBox_PrimaryTileset->addItem(createTilesetDialog->fullSymbolName);
|
this->ui->comboBox_PrimaryTileset->addItem(createTilesetDialog->fullSymbolName);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue