Add default tileset config options
This commit is contained in:
parent
35da77ca94
commit
f8a92c071c
5 changed files with 51 additions and 35 deletions
|
@ -209,6 +209,7 @@ public:
|
||||||
this->newMapMetatileId = 1;
|
this->newMapMetatileId = 1;
|
||||||
this->newMapElevation = 3;
|
this->newMapElevation = 3;
|
||||||
this->newMapBorderMetatileIds = DEFAULT_BORDER_RSE;
|
this->newMapBorderMetatileIds = DEFAULT_BORDER_RSE;
|
||||||
|
this->defaultPrimaryTileset = "gTileset_General";
|
||||||
this->prefabFilepath = QString();
|
this->prefabFilepath = QString();
|
||||||
this->prefabImportPrompted = false;
|
this->prefabImportPrompted = false;
|
||||||
this->tilesetsHaveCallback = true;
|
this->tilesetsHaveCallback = true;
|
||||||
|
@ -251,6 +252,8 @@ public:
|
||||||
int getNewMapElevation();
|
int getNewMapElevation();
|
||||||
void setNewMapBorderMetatileIds(QList<int> metatileIds);
|
void setNewMapBorderMetatileIds(QList<int> metatileIds);
|
||||||
QList<int> getNewMapBorderMetatileIds();
|
QList<int> getNewMapBorderMetatileIds();
|
||||||
|
QString getDefaultPrimaryTileset();
|
||||||
|
QString getDefaultSecondaryTileset();
|
||||||
void setFilePath(ProjectFilePath pathId, QString path);
|
void setFilePath(ProjectFilePath pathId, QString path);
|
||||||
QString getFilePath(ProjectFilePath pathId);
|
QString getFilePath(ProjectFilePath pathId);
|
||||||
void setPrefabFilepath(QString filepath);
|
void setPrefabFilepath(QString filepath);
|
||||||
|
@ -285,6 +288,8 @@ private:
|
||||||
int newMapMetatileId;
|
int newMapMetatileId;
|
||||||
int newMapElevation;
|
int newMapElevation;
|
||||||
QList<int> newMapBorderMetatileIds;
|
QList<int> newMapBorderMetatileIds;
|
||||||
|
QString defaultPrimaryTileset;
|
||||||
|
QString defaultSecondaryTileset;
|
||||||
QStringList readKeys;
|
QStringList readKeys;
|
||||||
QString prefabFilepath;
|
QString prefabFilepath;
|
||||||
bool prefabImportPrompted;
|
bool prefabImportPrompted;
|
||||||
|
|
|
@ -211,6 +211,9 @@ public:
|
||||||
QCompleter *getEventScriptLabelCompleter(QStringList additionalScriptLabels);
|
QCompleter *getEventScriptLabelCompleter(QStringList additionalScriptLabels);
|
||||||
QStringList getGlobalScriptLabels();
|
QStringList getGlobalScriptLabels();
|
||||||
|
|
||||||
|
QString getDefaultPrimaryTilesetLabel();
|
||||||
|
QString getDefaultSecondaryTilesetLabel();
|
||||||
|
|
||||||
static int getNumTilesPrimary();
|
static int getNumTilesPrimary();
|
||||||
static int getNumTilesTotal();
|
static int getNumTilesTotal();
|
||||||
static int getNumMetatilesPrimary();
|
static int getNumMetatilesPrimary();
|
||||||
|
@ -230,7 +233,6 @@ private:
|
||||||
void updateMapLayout(Map*);
|
void updateMapLayout(Map*);
|
||||||
|
|
||||||
void setNewMapHeader(Map* map, int mapIndex);
|
void setNewMapHeader(Map* map, int mapIndex);
|
||||||
void setNewMapLayout(Map* map);
|
|
||||||
void setNewMapBlockdata(Map* map);
|
void setNewMapBlockdata(Map* map);
|
||||||
void setNewMapBorder(Map *map);
|
void setNewMapBorder(Map *map);
|
||||||
void setNewMapEvents(Map *map);
|
void setNewMapEvents(Map *map);
|
||||||
|
|
|
@ -545,6 +545,10 @@ void ProjectConfig::parseConfigKeyValue(QString key, QString value) {
|
||||||
// Set any metatiles not provided to 0
|
// Set any metatiles not provided to 0
|
||||||
this->newMapBorderMetatileIds.append(0);
|
this->newMapBorderMetatileIds.append(0);
|
||||||
}
|
}
|
||||||
|
} else if (key == "default_primary_tileset") {
|
||||||
|
this->defaultPrimaryTileset = value;
|
||||||
|
} else if (key == "default_secondary_tileset") {
|
||||||
|
this->defaultSecondaryTileset = value;
|
||||||
#ifdef CONFIG_BACKWARDS_COMPATABILITY
|
#ifdef CONFIG_BACKWARDS_COMPATABILITY
|
||||||
} else if (key == "recent_map") {
|
} else if (key == "recent_map") {
|
||||||
userConfig.setRecentMap(value);
|
userConfig.setRecentMap(value);
|
||||||
|
@ -594,6 +598,7 @@ void ProjectConfig::setUnreadKeys() {
|
||||||
if (!readKeys.contains("enable_floor_number")) this->enableFloorNumber = isPokefirered;
|
if (!readKeys.contains("enable_floor_number")) this->enableFloorNumber = isPokefirered;
|
||||||
if (!readKeys.contains("create_map_text_file")) this->createMapTextFile = (this->baseGameVersion != BaseGameVersion::pokeemerald);
|
if (!readKeys.contains("create_map_text_file")) this->createMapTextFile = (this->baseGameVersion != BaseGameVersion::pokeemerald);
|
||||||
if (!readKeys.contains("new_map_border_metatiles")) this->newMapBorderMetatileIds = isPokefirered ? DEFAULT_BORDER_FRLG : DEFAULT_BORDER_RSE;
|
if (!readKeys.contains("new_map_border_metatiles")) this->newMapBorderMetatileIds = isPokefirered ? DEFAULT_BORDER_FRLG : DEFAULT_BORDER_RSE;
|
||||||
|
if (!readKeys.contains("default_secondary_tileset")) this->defaultSecondaryTileset = isPokefirered ? "gTileset_PalletTown" : "gTileset_Petalburg";
|
||||||
}
|
}
|
||||||
|
|
||||||
QMap<QString, QString> ProjectConfig::getKeyValueMap() {
|
QMap<QString, QString> ProjectConfig::getKeyValueMap() {
|
||||||
|
@ -616,6 +621,8 @@ QMap<QString, QString> ProjectConfig::getKeyValueMap() {
|
||||||
for (auto metatile : this->newMapBorderMetatileIds)
|
for (auto metatile : this->newMapBorderMetatileIds)
|
||||||
metatiles << QString::number(metatile);
|
metatiles << QString::number(metatile);
|
||||||
map.insert("new_map_border_metatiles", metatiles.join(","));
|
map.insert("new_map_border_metatiles", metatiles.join(","));
|
||||||
|
map.insert("default_primary_tileset", this->defaultPrimaryTileset);
|
||||||
|
map.insert("default_secondary_tileset", this->defaultSecondaryTileset);
|
||||||
map.insert("prefabs_filepath", this->prefabFilepath);
|
map.insert("prefabs_filepath", this->prefabFilepath);
|
||||||
map.insert("prefabs_import_prompted", QString::number(this->prefabImportPrompted));
|
map.insert("prefabs_import_prompted", QString::number(this->prefabImportPrompted));
|
||||||
for (auto it = this->filePaths.constKeyValueBegin(); it != this->filePaths.constKeyValueEnd(); ++it) {
|
for (auto it = this->filePaths.constKeyValueBegin(); it != this->filePaths.constKeyValueEnd(); ++it) {
|
||||||
|
@ -652,17 +659,7 @@ void ProjectConfig::onNewConfigFileCreated() {
|
||||||
this->baseGameVersion = static_cast<BaseGameVersion>(baseGameVersionComboBox->currentData().toInt());
|
this->baseGameVersion = static_cast<BaseGameVersion>(baseGameVersionComboBox->currentData().toInt());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool isPokefirered = this->baseGameVersion == BaseGameVersion::pokefirered;
|
this->setUnreadKeys(); // Initialize version-specific options
|
||||||
this->useCustomBorderSize = isPokefirered;
|
|
||||||
this->enableEventWeatherTrigger = !isPokefirered;
|
|
||||||
this->enableEventSecretBase = !isPokefirered;
|
|
||||||
this->enableHiddenItemQuantity = isPokefirered;
|
|
||||||
this->enableHiddenItemRequiresItemfinder = isPokefirered;
|
|
||||||
this->enableHealLocationRespawnData = isPokefirered;
|
|
||||||
this->enableEventCloneObject = isPokefirered;
|
|
||||||
this->enableFloorNumber = isPokefirered;
|
|
||||||
this->createMapTextFile = (this->baseGameVersion != BaseGameVersion::pokeemerald);
|
|
||||||
this->newMapBorderMetatileIds = isPokefirered ? DEFAULT_BORDER_FRLG : DEFAULT_BORDER_RSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectConfig::setProjectDir(QString projectDir) {
|
void ProjectConfig::setProjectDir(QString projectDir) {
|
||||||
|
@ -835,6 +832,14 @@ QList<int> ProjectConfig::getNewMapBorderMetatileIds() {
|
||||||
return this->newMapBorderMetatileIds;
|
return this->newMapBorderMetatileIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString ProjectConfig::getDefaultPrimaryTileset() {
|
||||||
|
return this->defaultPrimaryTileset;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ProjectConfig::getDefaultSecondaryTileset() {
|
||||||
|
return this->defaultSecondaryTileset;
|
||||||
|
}
|
||||||
|
|
||||||
void ProjectConfig::setPrefabFilepath(QString filepath) {
|
void ProjectConfig::setPrefabFilepath(QString filepath) {
|
||||||
this->prefabFilepath = filepath;
|
this->prefabFilepath = filepath;
|
||||||
this->save();
|
this->save();
|
||||||
|
|
|
@ -591,26 +591,6 @@ void Project::ignoreWatchedFileTemporarily(QString filepath) {
|
||||||
modifiedFileTimestamps.insert(filepath, QDateTime::currentMSecsSinceEpoch() + 5000);
|
modifiedFileTimestamps.insert(filepath, QDateTime::currentMSecsSinceEpoch() + 5000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Project::setNewMapLayout(Map* map) {
|
|
||||||
MapLayout *layout = new MapLayout();
|
|
||||||
layout->id = MapLayout::layoutConstantFromName(map->name);
|
|
||||||
layout->name = QString("%1_Layout").arg(map->name);
|
|
||||||
layout->width = getDefaultMapSize();
|
|
||||||
layout->height = getDefaultMapSize();
|
|
||||||
layout->border_width = DEFAULT_BORDER_WIDTH;
|
|
||||||
layout->border_height = DEFAULT_BORDER_HEIGHT;
|
|
||||||
layout->border_path = QString("%2%1/border.bin").arg(map->name).arg(projectConfig.getFilePath(ProjectFilePath::data_layouts_folders));
|
|
||||||
layout->blockdata_path = QString("%2%1/map.bin").arg(map->name).arg(projectConfig.getFilePath(ProjectFilePath::data_layouts_folders));
|
|
||||||
layout->tileset_primary_label = this->primaryTilesetLabels.value(0, "gTileset_General");
|
|
||||||
layout->tileset_secondary_label = this->secondaryTilesetLabels.value(0, projectConfig.getBaseGameVersion() == BaseGameVersion::pokefirered ? "gTileset_PalletTown" : "gTileset_Petalburg");
|
|
||||||
map->layout = layout;
|
|
||||||
map->layoutId = layout->id;
|
|
||||||
|
|
||||||
// Insert new entry into the global map layouts.
|
|
||||||
mapLayouts.insert(layout->id, layout);
|
|
||||||
mapLayoutsTable.append(layout->id);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Project::saveMapGroups() {
|
void Project::saveMapGroups() {
|
||||||
QString mapGroupsFilepath = QString("%1/%2").arg(root).arg(projectConfig.getFilePath(ProjectFilePath::json_map_groups));
|
QString mapGroupsFilepath = QString("%1/%2").arg(root).arg(projectConfig.getFilePath(ProjectFilePath::json_map_groups));
|
||||||
QFile mapGroupsFile(mapGroupsFilepath);
|
QFile mapGroupsFile(mapGroupsFilepath);
|
||||||
|
@ -1046,7 +1026,7 @@ void Project::saveTilesetPalettes(Tileset *tileset) {
|
||||||
bool Project::loadLayoutTilesets(MapLayout *layout) {
|
bool Project::loadLayoutTilesets(MapLayout *layout) {
|
||||||
layout->tileset_primary = getTileset(layout->tileset_primary_label);
|
layout->tileset_primary = getTileset(layout->tileset_primary_label);
|
||||||
if (!layout->tileset_primary) {
|
if (!layout->tileset_primary) {
|
||||||
QString defaultTileset = primaryTilesetLabels.value(0, "gTileset_General");
|
QString defaultTileset = this->getDefaultPrimaryTilesetLabel();
|
||||||
logWarn(QString("Map layout %1 has invalid primary tileset '%2'. Using default '%3'").arg(layout->id).arg(layout->tileset_primary_label).arg(defaultTileset));
|
logWarn(QString("Map layout %1 has invalid primary tileset '%2'. Using default '%3'").arg(layout->id).arg(layout->tileset_primary_label).arg(defaultTileset));
|
||||||
layout->tileset_primary_label = defaultTileset;
|
layout->tileset_primary_label = defaultTileset;
|
||||||
layout->tileset_primary = getTileset(layout->tileset_primary_label);
|
layout->tileset_primary = getTileset(layout->tileset_primary_label);
|
||||||
|
@ -1058,7 +1038,7 @@ bool Project::loadLayoutTilesets(MapLayout *layout) {
|
||||||
|
|
||||||
layout->tileset_secondary = getTileset(layout->tileset_secondary_label);
|
layout->tileset_secondary = getTileset(layout->tileset_secondary_label);
|
||||||
if (!layout->tileset_secondary) {
|
if (!layout->tileset_secondary) {
|
||||||
QString defaultTileset = secondaryTilesetLabels.value(0, projectConfig.getBaseGameVersion() == BaseGameVersion::pokefirered ? "gTileset_PalletTown" : "gTileset_Petalburg");
|
QString defaultTileset = this->getDefaultSecondaryTilesetLabel();
|
||||||
logWarn(QString("Map layout %1 has invalid secondary tileset '%2'. Using default '%3'").arg(layout->id).arg(layout->tileset_secondary_label).arg(defaultTileset));
|
logWarn(QString("Map layout %1 has invalid secondary tileset '%2'. Using default '%3'").arg(layout->id).arg(layout->tileset_secondary_label).arg(defaultTileset));
|
||||||
layout->tileset_secondary_label = defaultTileset;
|
layout->tileset_secondary_label = defaultTileset;
|
||||||
layout->tileset_secondary = getTileset(layout->tileset_secondary_label);
|
layout->tileset_secondary = getTileset(layout->tileset_secondary_label);
|
||||||
|
@ -1850,8 +1830,28 @@ Project::DataQualifiers Project::getDataQualifiers(QString text, QString label)
|
||||||
return qualifiers;
|
return qualifiers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString Project::getDefaultPrimaryTilesetLabel() {
|
||||||
|
QString defaultLabel = projectConfig.getDefaultPrimaryTileset();
|
||||||
|
if (!this->primaryTilesetLabels.contains(defaultLabel)) {
|
||||||
|
QString firstLabel = this->primaryTilesetLabels.first();
|
||||||
|
logWarn(QString("Unable to find default primary tileset '%1', using '%2' instead.").arg(defaultLabel).arg(firstLabel));
|
||||||
|
defaultLabel = firstLabel;
|
||||||
|
}
|
||||||
|
return defaultLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Project::getDefaultSecondaryTilesetLabel() {
|
||||||
|
QString defaultLabel = projectConfig.getDefaultSecondaryTileset();
|
||||||
|
if (!this->secondaryTilesetLabels.contains(defaultLabel)) {
|
||||||
|
QString firstLabel = this->secondaryTilesetLabels.first();
|
||||||
|
logWarn(QString("Unable to find default secondary tileset '%1', using '%2' instead.").arg(defaultLabel).arg(firstLabel));
|
||||||
|
defaultLabel = firstLabel;
|
||||||
|
}
|
||||||
|
return defaultLabel;
|
||||||
|
}
|
||||||
|
|
||||||
void Project::insertTilesetLabel(QString label, bool isSecondary) {
|
void Project::insertTilesetLabel(QString label, bool isSecondary) {
|
||||||
if (isSecondary)
|
if (!isSecondary)
|
||||||
this->primaryTilesetLabels.append(label);
|
this->primaryTilesetLabels.append(label);
|
||||||
else
|
else
|
||||||
this->secondaryTilesetLabels.append(label);
|
this->secondaryTilesetLabels.append(label);
|
||||||
|
|
|
@ -132,6 +132,10 @@ void NewMapPopup::setDefaultValues(int groupNum, QString mapSec) {
|
||||||
ui->spinBox_NewMap_Height->setValue(project->getDefaultMapSize());
|
ui->spinBox_NewMap_Height->setValue(project->getDefaultMapSize());
|
||||||
ui->spinBox_NewMap_BorderWidth->setValue(DEFAULT_BORDER_WIDTH);
|
ui->spinBox_NewMap_BorderWidth->setValue(DEFAULT_BORDER_WIDTH);
|
||||||
ui->spinBox_NewMap_BorderHeight->setValue(DEFAULT_BORDER_HEIGHT);
|
ui->spinBox_NewMap_BorderHeight->setValue(DEFAULT_BORDER_HEIGHT);
|
||||||
|
int primaryIdx = ui->comboBox_NewMap_Primary_Tileset->findText(project->getDefaultPrimaryTilesetLabel());
|
||||||
|
int secondaryIdx = ui->comboBox_NewMap_Secondary_Tileset->findText(project->getDefaultSecondaryTilesetLabel());
|
||||||
|
ui->comboBox_NewMap_Primary_Tileset->setCurrentIndex(primaryIdx);
|
||||||
|
ui->comboBox_NewMap_Secondary_Tileset->setCurrentIndex(secondaryIdx);
|
||||||
}
|
}
|
||||||
|
|
||||||
ui->comboBox_NewMap_Type->addItems(project->mapTypes);
|
ui->comboBox_NewMap_Type->addItems(project->mapTypes);
|
||||||
|
|
Loading…
Reference in a new issue