extend "Add New Map" to different MapSortOrders
This commit is contained in:
parent
8ccf036c6d
commit
19e7cc59f7
8 changed files with 195 additions and 39 deletions
|
@ -482,8 +482,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>469</width>
|
||||
<height>608</height>
|
||||
<width>545</width>
|
||||
<height>587</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_8">
|
||||
|
@ -797,8 +797,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>324</width>
|
||||
<height>77</height>
|
||||
<width>256</width>
|
||||
<height>74</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||
|
@ -907,10 +907,10 @@
|
|||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<x>8</x>
|
||||
<y>0</y>
|
||||
<width>307</width>
|
||||
<height>387</height>
|
||||
<width>222</width>
|
||||
<height>353</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
|
@ -1226,8 +1226,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>381</width>
|
||||
<height>657</height>
|
||||
<width>371</width>
|
||||
<height>643</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_7">
|
||||
|
@ -1500,7 +1500,7 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>430</width>
|
||||
<height>568</height>
|
||||
<height>534</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
|
@ -2285,8 +2285,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>826</width>
|
||||
<height>557</height>
|
||||
<width>818</width>
|
||||
<height>539</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_14">
|
||||
|
@ -2458,7 +2458,7 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1117</width>
|
||||
<height>21</height>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuFile">
|
||||
|
@ -2466,7 +2466,6 @@
|
|||
<string>File</string>
|
||||
</property>
|
||||
<addaction name="action_Open_Project"/>
|
||||
<addaction name="action_NewMap"/>
|
||||
<addaction name="action_Save"/>
|
||||
<addaction name="action_Save_Project"/>
|
||||
<addaction name="separator"/>
|
||||
|
@ -2500,6 +2499,7 @@
|
|||
<addaction name="actionMove"/>
|
||||
<addaction name="actionMap_Shift"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="action_NewMap"/>
|
||||
<addaction name="actionTileset_Editor"/>
|
||||
</widget>
|
||||
<addaction name="menuFile"/>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>410</width>
|
||||
<height>424</height>
|
||||
<height>508</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
@ -33,9 +33,26 @@
|
|||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetFixedSize</enum>
|
||||
</property>
|
||||
<property name="verticalSpacing">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_newMap_Name">
|
||||
<property name="text">
|
||||
<string>Name</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_NewMap_Name">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The name of the new map. If the name is invalid (red), it will be replaced with the default name of a new map.</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_NewMap_Group">
|
||||
<property name="text">
|
||||
|
@ -172,17 +189,45 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_newMap_Name">
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="label_NewMap_Allow_Running">
|
||||
<property name="text">
|
||||
<string>Name</string>
|
||||
<string>Allow Running</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_NewMap_Name">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The name of the new map. If the name is invalid (red), it will be replaced with the default name of a new map.</p></body></html></string>
|
||||
<item row="10" column="0">
|
||||
<widget class="QLabel" name="label_NewMap_Allow_Biking">
|
||||
<property name="text">
|
||||
<string>Allow Biking</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="11" column="0">
|
||||
<widget class="QLabel" name="label_NewMap_Allow_Escape_Rope">
|
||||
<property name="text">
|
||||
<string>Allow Escape Rope</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1">
|
||||
<widget class="QCheckBox" name="checkBox_NewMap_Allow_Running">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="1">
|
||||
<widget class="QCheckBox" name="checkBox_NewMap_Allow_Biking">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="11" column="1">
|
||||
<widget class="QCheckBox" name="checkBox_NewMap_Allow_Escape_Rope">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
|
@ -48,7 +48,7 @@ private slots:
|
|||
void onMapChanged(Map *map);
|
||||
void onMapNeedsRedrawing();
|
||||
void onTilesetsSaved(QString, QString);
|
||||
void openNewMapPopupWindow(int);
|
||||
void openNewMapPopupWindow(int, QVariant);
|
||||
void onNewMapCreated();
|
||||
|
||||
void on_action_NewMap_triggered();
|
||||
|
@ -103,6 +103,8 @@ private slots:
|
|||
|
||||
void onOpenMapListContextMenu(const QPoint &point);
|
||||
void onAddNewMapToGroupClick(QAction* triggeredAction);
|
||||
void onAddNewMapToAreaClick(QAction* triggeredAction);
|
||||
void onAddNewMapToLayoutClick(QAction* triggeredAction);
|
||||
void onTilesetChanged(QString);
|
||||
void currentMetatilesSelectionChanged();
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ public:
|
|||
|
||||
void readMapGroups();
|
||||
Map* addNewMapToGroup(QString mapName, int groupNum);
|
||||
Map* addNewMapToGroup(QString, int, Map*);
|
||||
Map* addNewMapToGroup(QString, int, Map*, bool);
|
||||
QString getNewMapName();
|
||||
QString getProjectTitle();
|
||||
|
||||
|
|
|
@ -19,7 +19,10 @@ public:
|
|||
~NewMapPopup();
|
||||
Map *map;
|
||||
int group;
|
||||
void init(int);
|
||||
bool changeLayout;
|
||||
QString layoutName;
|
||||
void init(int, int, QString, QString);
|
||||
void useLayout(QString);
|
||||
|
||||
signals:
|
||||
void applied();
|
||||
|
@ -27,7 +30,7 @@ signals:
|
|||
private:
|
||||
Ui::NewMapPopup *ui;
|
||||
Project *project;
|
||||
void setDefaultValues(int);
|
||||
void setDefaultValues(int, QString);
|
||||
|
||||
private slots:
|
||||
void on_pushButton_NewMap_Accept_clicked();
|
||||
|
|
|
@ -736,21 +736,48 @@ void MainWindow::onOpenMapListContextMenu(const QPoint &point)
|
|||
actions->addAction(menu->addAction("Add New Map to Group"))->setData(groupNum);
|
||||
connect(actions, SIGNAL(triggered(QAction*)), this, SLOT(onAddNewMapToGroupClick(QAction*)));
|
||||
menu->exec(QCursor::pos());
|
||||
} else if (itemType == "map_sec") {
|
||||
QString secName = selectedItem->data(Qt::UserRole).toString();
|
||||
QMenu* menu = new QMenu(this);
|
||||
QActionGroup* actions = new QActionGroup(menu);
|
||||
actions->addAction(menu->addAction("Add New Map to Area"))->setData(secName);
|
||||
connect(actions, SIGNAL(triggered(QAction*)), this, SLOT(onAddNewMapToAreaClick(QAction*)));
|
||||
menu->exec(QCursor::pos());
|
||||
} else if (itemType == "map_layout") {
|
||||
QString layoutName = selectedItem->data(Qt::UserRole).toString();
|
||||
QMenu* menu = new QMenu(this);
|
||||
QActionGroup* actions = new QActionGroup(menu);
|
||||
actions->addAction(menu->addAction("Add New Map with Layout"))->setData(layoutName);
|
||||
connect(actions, SIGNAL(triggered(QAction*)), this, SLOT(onAddNewMapToLayoutClick(QAction*)));
|
||||
menu->exec(QCursor::pos());
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::onAddNewMapToGroupClick(QAction* triggeredAction)
|
||||
{
|
||||
int groupNum = triggeredAction->data().toInt();
|
||||
openNewMapPopupWindow(groupNum);
|
||||
openNewMapPopupWindow(MapSortOrder::Group, groupNum);
|
||||
}
|
||||
|
||||
void MainWindow::onAddNewMapToAreaClick(QAction* triggeredAction)
|
||||
{
|
||||
QString secName = triggeredAction->data().toString();
|
||||
openNewMapPopupWindow(MapSortOrder::Area, secName);
|
||||
}
|
||||
|
||||
void MainWindow::onAddNewMapToLayoutClick(QAction* triggeredAction)
|
||||
{
|
||||
QString layoutName = triggeredAction->data().toString();
|
||||
openNewMapPopupWindow(MapSortOrder::Layout, layoutName);
|
||||
}
|
||||
|
||||
void MainWindow::onNewMapCreated() {
|
||||
QString newMapName = this->newmapprompt->map->name;
|
||||
int newMapGroup = this->newmapprompt->group;
|
||||
Map *newMap_ = this->newmapprompt->map;
|
||||
bool updateLayout = this->newmapprompt->changeLayout;
|
||||
|
||||
Map *newMap = editor->project->addNewMapToGroup(newMapName, newMapGroup, newMap_);
|
||||
Map *newMap = editor->project->addNewMapToGroup(newMapName, newMapGroup, newMap_, updateLayout);
|
||||
|
||||
logInfo(QString("Created a new map named %1.").arg(newMapName));
|
||||
|
||||
|
@ -774,7 +801,7 @@ void MainWindow::onNewMapCreated() {
|
|||
disconnect(this->newmapprompt, SIGNAL(applied()), this, SLOT(onNewMapCreated()));
|
||||
}
|
||||
|
||||
void MainWindow::openNewMapPopupWindow(int groupNum) {
|
||||
void MainWindow::openNewMapPopupWindow(int type, QVariant data) {
|
||||
if (!this->newmapprompt) {
|
||||
this->newmapprompt = new NewMapPopup(this, this->editor->project);
|
||||
}
|
||||
|
@ -784,14 +811,25 @@ void MainWindow::openNewMapPopupWindow(int groupNum) {
|
|||
this->newmapprompt->raise();
|
||||
this->newmapprompt->activateWindow();
|
||||
}
|
||||
this->newmapprompt->init(groupNum);
|
||||
switch (type)
|
||||
{
|
||||
case MapSortOrder::Group:
|
||||
this->newmapprompt->init(type, data.toInt(), QString(), QString());
|
||||
break;
|
||||
case MapSortOrder::Area:
|
||||
this->newmapprompt->init(type, 0, data.toString(), QString());
|
||||
break;
|
||||
case MapSortOrder::Layout:
|
||||
this->newmapprompt->init(type, 0, QString(), data.toString());
|
||||
break;
|
||||
}
|
||||
connect(this->newmapprompt, SIGNAL(applied()), this, SLOT(onNewMapCreated()));
|
||||
connect(this->newmapprompt, &QObject::destroyed, [=](QObject *) { this->newmapprompt = nullptr; });
|
||||
this->newmapprompt->setAttribute(Qt::WA_DeleteOnClose);
|
||||
}
|
||||
|
||||
void MainWindow::on_action_NewMap_triggered() {
|
||||
openNewMapPopupWindow(0);
|
||||
openNewMapPopupWindow(MapSortOrder::Group, 0);
|
||||
}
|
||||
|
||||
void MainWindow::onTilesetChanged(QString mapName)
|
||||
|
|
|
@ -1238,7 +1238,7 @@ Map* Project::addNewMapToGroup(QString mapName, int groupNum) {
|
|||
return map;
|
||||
}
|
||||
|
||||
Map* Project::addNewMapToGroup(QString mapName, int groupNum, Map *newMap) {
|
||||
Map* Project::addNewMapToGroup(QString mapName, int groupNum, Map *newMap, bool updateLayout) {
|
||||
mapNames->append(mapName);
|
||||
map_groups->insert(mapName, groupNum);
|
||||
groupedMapNames[groupNum].append(mapName);
|
||||
|
@ -1264,8 +1264,10 @@ Map* Project::addNewMapToGroup(QString mapName, int groupNum, Map *newMap) {
|
|||
mapLayouts.insert(map->layout->label, map->layout);
|
||||
mapLayoutsTable.append(map->layout->label);
|
||||
loadMapTilesets(map);
|
||||
setNewMapBlockdata(map);
|
||||
setNewMapBorder(map);
|
||||
if (!updateLayout) {
|
||||
setNewMapBlockdata(map);
|
||||
setNewMapBorder(map);
|
||||
}
|
||||
setNewMapEvents(map);
|
||||
setNewMapConnections(map);
|
||||
map->commit();
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "maplayout.h"
|
||||
#include "mainwindow.h"
|
||||
#include "ui_newmappopup.h"
|
||||
#include "config.h"
|
||||
|
||||
#include <QMap>
|
||||
#include <QSet>
|
||||
|
@ -15,6 +16,7 @@ NewMapPopup::NewMapPopup(QWidget *parent, Project *project) :
|
|||
{
|
||||
ui->setupUi(this);
|
||||
this->project = project;
|
||||
this->changeLayout = false;
|
||||
}
|
||||
|
||||
NewMapPopup::~NewMapPopup()
|
||||
|
@ -22,11 +24,32 @@ NewMapPopup::~NewMapPopup()
|
|||
delete ui;
|
||||
}
|
||||
|
||||
void NewMapPopup::init(int group) {
|
||||
setDefaultValues(group);
|
||||
void NewMapPopup::init(int type, int group, QString sec, QString layout) {
|
||||
switch (type)
|
||||
{
|
||||
case MapSortOrder::Group:
|
||||
setDefaultValues(group, QString());
|
||||
break;
|
||||
case MapSortOrder::Area:
|
||||
setDefaultValues(group, sec);
|
||||
break;
|
||||
case MapSortOrder::Layout:
|
||||
useLayout(layout);
|
||||
setDefaultValues(group, QString());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void NewMapPopup::setDefaultValues(int groupNum) {
|
||||
void NewMapPopup::useLayout(QString mapName) {
|
||||
this->changeLayout = true;
|
||||
this->layoutName = mapName;
|
||||
qDebug() << "will use layout of map" << layoutName;
|
||||
}
|
||||
|
||||
// check for null QStrings
|
||||
// TODO: if layout, set height and width then dont allow editing
|
||||
// project->map_cache->mapname? ->layouot->{width, height, }
|
||||
void NewMapPopup::setDefaultValues(int groupNum, QString mapSec) {
|
||||
ui->lineEdit_NewMap_Name->setText(project->getNewMapName());
|
||||
|
||||
QMap<QString, QStringList> tilesets = project->getTilesets();
|
||||
|
@ -36,13 +59,45 @@ void NewMapPopup::setDefaultValues(int groupNum) {
|
|||
ui->comboBox_NewMap_Group->addItems(*project->groupNames);
|
||||
ui->comboBox_NewMap_Group->setCurrentText("gMapGroup" + QString::number(groupNum));
|
||||
|
||||
ui->spinBox_NewMap_Width->setValue(20);
|
||||
ui->spinBox_NewMap_Height->setValue(20);
|
||||
if (changeLayout) {
|
||||
ui->spinBox_NewMap_Width->setValue(project->mapLayouts.value(layoutName)->width.toInt(nullptr, 0));
|
||||
ui->spinBox_NewMap_Height->setValue(project->mapLayouts.value(layoutName)->height.toInt(nullptr, 0));
|
||||
ui->comboBox_NewMap_Primary_Tileset->setCurrentText(project->mapLayouts.value(layoutName)->tileset_primary_label);
|
||||
ui->comboBox_NewMap_Secondary_Tileset->setCurrentText(project->mapLayouts.value(layoutName)->tileset_secondary_label);
|
||||
ui->spinBox_NewMap_Width->setDisabled(true);
|
||||
ui->spinBox_NewMap_Height->setDisabled(true);
|
||||
ui->comboBox_NewMap_Primary_Tileset->setDisabled(true);
|
||||
ui->comboBox_NewMap_Secondary_Tileset->setDisabled(true);
|
||||
} else {
|
||||
ui->spinBox_NewMap_Width->setValue(20);
|
||||
ui->spinBox_NewMap_Height->setValue(20);
|
||||
}
|
||||
|
||||
ui->comboBox_NewMap_Type->addItems(*project->mapTypes);
|
||||
ui->comboBox_NewMap_Location->addItems(*project->regionMapSections);
|
||||
if (!mapSec.isEmpty()) ui->comboBox_NewMap_Location->setCurrentText(mapSec);
|
||||
|
||||
ui->frame_NewMap_Options->setEnabled(true);
|
||||
|
||||
switch (projectConfig.getBaseGameVersion())
|
||||
{
|
||||
case BaseGameVersion::pokeruby:
|
||||
ui->checkBox_NewMap_Allow_Running->setVisible(false);
|
||||
ui->checkBox_NewMap_Allow_Biking->setVisible(false);
|
||||
ui->checkBox_NewMap_Allow_Escape_Rope->setVisible(false);
|
||||
ui->label_NewMap_Allow_Running->setVisible(false);
|
||||
ui->label_NewMap_Allow_Biking->setVisible(false);
|
||||
ui->label_NewMap_Allow_Escape_Rope->setVisible(false);
|
||||
break;
|
||||
case BaseGameVersion::pokeemerald:
|
||||
ui->checkBox_NewMap_Allow_Running->setVisible(true);
|
||||
ui->checkBox_NewMap_Allow_Biking->setVisible(true);
|
||||
ui->checkBox_NewMap_Allow_Escape_Rope->setVisible(true);
|
||||
ui->label_NewMap_Allow_Running->setVisible(true);
|
||||
ui->label_NewMap_Allow_Biking->setVisible(true);
|
||||
ui->label_NewMap_Allow_Escape_Rope->setVisible(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void NewMapPopup::on_lineEdit_NewMap_Name_textChanged(const QString &text) {
|
||||
|
@ -82,10 +137,21 @@ void NewMapPopup::on_pushButton_NewMap_Accept_clicked() {
|
|||
layout->blockdata_label = QString("%1_MapBlockdata").arg(newMap->name);
|
||||
layout->blockdata_path = QString("data/layouts/%1/map.bin").arg(newMap->name);
|
||||
|
||||
if (changeLayout) {
|
||||
layout->blockdata = project->mapLayouts.value(layoutName)->blockdata;
|
||||
layout->border = project->mapLayouts.value(layoutName)->border;
|
||||
}
|
||||
|
||||
if (this->ui->checkBox_NewMap_Flyable->isChecked()) {
|
||||
newMap->isFlyable = "TRUE";
|
||||
}
|
||||
|
||||
if (projectConfig.getBaseGameVersion() == BaseGameVersion::pokeemerald) {
|
||||
newMap->allowRunning = this->ui->checkBox_NewMap_Allow_Running->isChecked() ? "1" : "0";
|
||||
newMap->allowBiking = this->ui->checkBox_NewMap_Allow_Biking->isChecked() ? "1" : "0";
|
||||
newMap->allowEscapeRope = this->ui->checkBox_NewMap_Allow_Escape_Rope->isChecked() ? "1" : "0";
|
||||
}
|
||||
|
||||
newMap->layout = layout;
|
||||
newMap->layout_label = layout->label;
|
||||
|
||||
|
|
Loading…
Reference in a new issue