fix new map from layout extra files

This commit is contained in:
garak 2019-01-07 16:31:11 -05:00
parent bc75cff5c6
commit ca03167377
3 changed files with 12 additions and 9 deletions

View file

@ -43,6 +43,7 @@ public:
QString battle_scene;
MapLayout *layout;
bool isPersistedToFile = true;
bool needsLayoutDir = true;
QImage collision_image;
QPixmap collision_pixmap;
QImage image;

View file

@ -841,9 +841,14 @@ void Project::saveMap(Map *map) {
logError(QString("Error: failed to create directory for new map: '%1'").arg(newMapDataDir));
}
QString newLayoutDir = QString(root + "/data/layouts/%1").arg(map->name);
if (!QDir::root().mkdir(newLayoutDir)) {
logError(QString("Error: failed to create directory for new layout: '%1'").arg(newLayoutDir));
if (map->needsLayoutDir) {
QString newLayoutDir = QString(root + "/data/layouts/%1").arg(map->name);
if (!QDir::root().mkdir(newLayoutDir)) {
logError(QString("Error: failed to create directory for new layout: '%1'").arg(newLayoutDir));
}
// Simply append to data/layouts.inc.
QString layout_text = QString("\t.include \"data/layouts/%1/layout.inc\"\n").arg(map->layout->name);
appendTextFile(root + "/data/layouts.inc", layout_text);
}
// TODO: In the future, these files needs more structure to allow for proper parsing/saving.
@ -866,10 +871,6 @@ void Project::saveMap(Map *map) {
// Simply append to data/maps/headers.inc.
text = QString("\t.include \"data/maps/%1/header.inc\"\n").arg(map->name);
appendTextFile(root + "/data/maps/headers.inc", text);
// Simply append to data/layouts.inc.
text = QString("\t.include \"data/layouts/%1/layout.inc\"\n").arg(map->layout->name);
appendTextFile(root + "/data/layouts.inc", text);
}
saveMapBorder(map);

View file

@ -127,9 +127,7 @@ void NewMapPopup::on_pushButton_NewMap_Accept_clicked() {
layout->tileset_primary_label = this->ui->comboBox_NewMap_Primary_Tileset->currentText();
layout->tileset_secondary_label = this->ui->comboBox_NewMap_Secondary_Tileset->currentText();
layout->border_label = QString("%1_MapBorder").arg(newMap->name);
layout->border_path = QString("data/layouts/%1/border.bin").arg(newMap->name);
layout->blockdata_label = QString("%1_MapBlockdata").arg(newMap->name);
layout->blockdata_path = QString("data/layouts/%1/map.bin").arg(newMap->name);
if (changeLayout) {
layout->label = layoutName;
@ -138,7 +136,10 @@ void NewMapPopup::on_pushButton_NewMap_Accept_clicked() {
QString border_path = QString("%1/data/layout/%2/border.bin").arg(project->root).arg(MapLayout::getNameFromLabel(layoutName));
layout->blockdata = project->readBlockdata(block_path);
layout->border = project->readBlockdata(border_path);
newMap->needsLayoutDir = false;
} else {
layout->border_path = QString("data/layouts/%1/border.bin").arg(newMap->name);
layout->blockdata_path = QString("data/layouts/%1/map.bin").arg(newMap->name);
layout->label = QString("%1_Layout").arg(newMap->name);
layout->name = MapLayout::getNameFromLabel(layout->label);
}