Some cleanup, and disable connection controls when loading map with no connections
This commit is contained in:
parent
dec99c8cac
commit
ad7b9ca7b3
3 changed files with 54 additions and 52 deletions
100
editor.cpp
100
editor.cpp
|
@ -97,9 +97,11 @@ void Editor::setEditingConnections() {
|
||||||
ui->label_NumConnections->setText(QString::number(map->connections.length()));
|
ui->label_NumConnections->setText(QString::number(map->connections.length()));
|
||||||
setConnectionsVisibility(false);
|
setConnectionsVisibility(false);
|
||||||
setDiveEmergeControls();
|
setDiveEmergeControls();
|
||||||
if (current_connection_edit_item) {
|
setConnectionEditControlsEnabled(selected_connection_item != NULL);
|
||||||
onConnectionOffsetChanged(current_connection_edit_item->connection->offset.toInt());
|
if (selected_connection_item) {
|
||||||
updateConnectionMap(current_connection_edit_item->connection->map_name, current_connection_edit_item->connection->direction);
|
onConnectionOffsetChanged(selected_connection_item->connection->offset.toInt());
|
||||||
|
setConnectionMap(selected_connection_item->connection->map_name);
|
||||||
|
setCurrentConnectionDirection(selected_connection_item->connection->direction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (collision_item) {
|
if (collision_item) {
|
||||||
|
@ -160,44 +162,45 @@ void Editor::setBorderItemsVisible(bool visible, qreal opacity) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Editor::setCurrentConnectionDirection(QString curDirection) {
|
void Editor::setCurrentConnectionDirection(QString curDirection) {
|
||||||
if (!current_connection_edit_item)
|
if (!selected_connection_item)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
current_connection_edit_item->connection->direction = curDirection;
|
selected_connection_item->connection->direction = curDirection;
|
||||||
Map *connected_map = project->getMap(current_connection_edit_item->connection->map_name);
|
|
||||||
QPixmap pixmap = connected_map->renderConnection(*current_connection_edit_item->connection);
|
Map *connected_map = project->getMap(selected_connection_item->connection->map_name);
|
||||||
int offset = current_connection_edit_item->connection->offset.toInt(nullptr, 0);
|
QPixmap pixmap = connected_map->renderConnection(*selected_connection_item->connection);
|
||||||
current_connection_edit_item->initialOffset = offset;
|
int offset = selected_connection_item->connection->offset.toInt(nullptr, 0);
|
||||||
|
selected_connection_item->initialOffset = offset;
|
||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
if (current_connection_edit_item->connection->direction == "up") {
|
if (selected_connection_item->connection->direction == "up") {
|
||||||
x = offset * 16;
|
x = offset * 16;
|
||||||
y = -pixmap.height();
|
y = -pixmap.height();
|
||||||
} else if (current_connection_edit_item->connection->direction == "down") {
|
} else if (selected_connection_item->connection->direction == "down") {
|
||||||
x = offset * 16;
|
x = offset * 16;
|
||||||
y = map->getHeight() * 16;
|
y = map->getHeight() * 16;
|
||||||
} else if (current_connection_edit_item->connection->direction == "left") {
|
} else if (selected_connection_item->connection->direction == "left") {
|
||||||
x = -pixmap.width();
|
x = -pixmap.width();
|
||||||
y = offset * 16;
|
y = offset * 16;
|
||||||
} else if (current_connection_edit_item->connection->direction == "right") {
|
} else if (selected_connection_item->connection->direction == "right") {
|
||||||
x = map->getWidth() * 16;
|
x = map->getWidth() * 16;
|
||||||
y = offset * 16;
|
y = offset * 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
current_connection_edit_item->basePixmap = pixmap;
|
selected_connection_item->basePixmap = pixmap;
|
||||||
QPainter painter(&pixmap);
|
QPainter painter(&pixmap);
|
||||||
painter.setPen(QColor(255, 0, 255));
|
painter.setPen(QColor(255, 0, 255));
|
||||||
painter.drawRect(0, 0, pixmap.width() - 1, pixmap.height() - 1);
|
painter.drawRect(0, 0, pixmap.width() - 1, pixmap.height() - 1);
|
||||||
painter.end();
|
painter.end();
|
||||||
current_connection_edit_item->setPixmap(pixmap);
|
selected_connection_item->setPixmap(pixmap);
|
||||||
current_connection_edit_item->initialX = x;
|
selected_connection_item->initialX = x;
|
||||||
current_connection_edit_item->initialY = y;
|
selected_connection_item->initialY = y;
|
||||||
current_connection_edit_item->blockSignals(true);
|
selected_connection_item->blockSignals(true);
|
||||||
current_connection_edit_item->setX(x);
|
selected_connection_item->setX(x);
|
||||||
current_connection_edit_item->setY(y);
|
selected_connection_item->setY(y);
|
||||||
current_connection_edit_item->setZValue(-1);
|
selected_connection_item->setZValue(-1);
|
||||||
current_connection_edit_item->blockSignals(false);
|
selected_connection_item->blockSignals(false);
|
||||||
|
|
||||||
setConnectionEditControlValues(current_connection_edit_item->connection);
|
setConnectionEditControlValues(selected_connection_item->connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Editor::onConnectionOffsetChanged(int newOffset) {
|
void Editor::onConnectionOffsetChanged(int newOffset) {
|
||||||
|
@ -253,11 +256,11 @@ void Editor::onConnectionItemSelected(ConnectionPixmapItem* connectionItem) {
|
||||||
item->setPixmap(pixmap);
|
item->setPixmap(pixmap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
current_connection_edit_item = connectionItem;
|
selected_connection_item = connectionItem;
|
||||||
setConnectionEditControlsEnabled(true);
|
setConnectionEditControlsEnabled(true);
|
||||||
setConnectionEditControlValues(current_connection_edit_item->connection);
|
setConnectionEditControlValues(selected_connection_item->connection);
|
||||||
ui->spinBox_ConnectionOffset->setMaximum(current_connection_edit_item->getMaxOffset());
|
ui->spinBox_ConnectionOffset->setMaximum(selected_connection_item->getMaxOffset());
|
||||||
ui->spinBox_ConnectionOffset->setMinimum(current_connection_edit_item->getMinOffset());
|
ui->spinBox_ConnectionOffset->setMinimum(selected_connection_item->getMinOffset());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Editor::setSelectedConnectionFromMap(QString mapName) {
|
void Editor::setSelectedConnectionFromMap(QString mapName) {
|
||||||
|
@ -424,7 +427,7 @@ void Editor::displayMapConnections() {
|
||||||
for (ConnectionPixmapItem* item : connection_edit_items) {
|
for (ConnectionPixmapItem* item : connection_edit_items) {
|
||||||
delete item;
|
delete item;
|
||||||
}
|
}
|
||||||
current_connection_edit_item = NULL;
|
selected_connection_item = NULL;
|
||||||
connection_edit_items.clear();
|
connection_edit_items.clear();
|
||||||
|
|
||||||
for (Connection *connection : map->connections) {
|
for (Connection *connection : map->connections) {
|
||||||
|
@ -508,38 +511,37 @@ void Editor::displayMapGrid() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Editor::updateConnectionOffset(int offset) {
|
void Editor::updateConnectionOffset(int offset) {
|
||||||
if (!current_connection_edit_item)
|
if (!selected_connection_item)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
current_connection_edit_item->blockSignals(true);
|
selected_connection_item->blockSignals(true);
|
||||||
offset = qMin(offset, current_connection_edit_item->getMaxOffset());
|
offset = qMin(offset, selected_connection_item->getMaxOffset());
|
||||||
offset = qMax(offset, current_connection_edit_item->getMinOffset());
|
offset = qMax(offset, selected_connection_item->getMinOffset());
|
||||||
current_connection_edit_item->connection->offset = QString::number(offset);
|
selected_connection_item->connection->offset = QString::number(offset);
|
||||||
if (current_connection_edit_item->connection->direction == "up" || current_connection_edit_item->connection->direction == "down") {
|
if (selected_connection_item->connection->direction == "up" || selected_connection_item->connection->direction == "down") {
|
||||||
current_connection_edit_item->setX(current_connection_edit_item->initialX + (offset - current_connection_edit_item->initialOffset) * 16);
|
selected_connection_item->setX(selected_connection_item->initialX + (offset - selected_connection_item->initialOffset) * 16);
|
||||||
} else {
|
} else {
|
||||||
current_connection_edit_item->setY(current_connection_edit_item->initialY + (offset - current_connection_edit_item->initialOffset) * 16);
|
selected_connection_item->setY(selected_connection_item->initialY + (offset - selected_connection_item->initialOffset) * 16);
|
||||||
}
|
}
|
||||||
current_connection_edit_item->blockSignals(false);
|
selected_connection_item->blockSignals(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Editor::updateConnectionMap(QString mapName, QString direction) {
|
void Editor::setConnectionMap(QString mapName) {
|
||||||
if (!mapName.isEmpty() && !project->mapNames->contains(mapName)) {
|
if (!mapName.isEmpty() && !project->mapNames->contains(mapName)) {
|
||||||
qDebug() << "Invalid map name " << mapName << " specified for connection.";
|
qDebug() << "Invalid map name " << mapName << " specified for connection.";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!current_connection_edit_item)
|
if (!selected_connection_item)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (mapName.isEmpty()) {
|
if (mapName.isEmpty()) {
|
||||||
removeCurrentConnection();
|
removeCurrentConnection();
|
||||||
return;
|
return;
|
||||||
} else {
|
|
||||||
setConnectionEditControlsEnabled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
current_connection_edit_item->connection->map_name = mapName;
|
setConnectionEditControlsEnabled(true);
|
||||||
setCurrentConnectionDirection(direction);
|
selected_connection_item->connection->map_name = mapName;
|
||||||
|
setCurrentConnectionDirection(selected_connection_item->connection->direction);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Editor::addNewConnection() {
|
void Editor::addNewConnection() {
|
||||||
|
@ -568,14 +570,14 @@ void Editor::addNewConnection() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Editor::removeCurrentConnection() {
|
void Editor::removeCurrentConnection() {
|
||||||
if (!current_connection_edit_item)
|
if (!selected_connection_item)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
map->connections.removeOne(current_connection_edit_item->connection);
|
map->connections.removeOne(selected_connection_item->connection);
|
||||||
connection_edit_items.removeOne(current_connection_edit_item);
|
connection_edit_items.removeOne(selected_connection_item);
|
||||||
scene->removeItem(current_connection_edit_item);
|
scene->removeItem(selected_connection_item);
|
||||||
delete current_connection_edit_item;
|
delete selected_connection_item;
|
||||||
current_connection_edit_item = NULL;
|
selected_connection_item = NULL;
|
||||||
setConnectionEditControlsEnabled(false);
|
setConnectionEditControlsEnabled(false);
|
||||||
ui->spinBox_ConnectionOffset->setValue(0);
|
ui->spinBox_ConnectionOffset->setValue(0);
|
||||||
ui->label_NumConnections->setText(QString::number(map->connections.length()));
|
ui->label_NumConnections->setText(QString::number(map->connections.length()));
|
||||||
|
|
4
editor.h
4
editor.h
|
@ -50,7 +50,7 @@ public:
|
||||||
void setCurrentConnectionDirection(QString curDirection);
|
void setCurrentConnectionDirection(QString curDirection);
|
||||||
void setConnectionsVisibility(bool visible);
|
void setConnectionsVisibility(bool visible);
|
||||||
void updateConnectionOffset(int offset);
|
void updateConnectionOffset(int offset);
|
||||||
void updateConnectionMap(QString mapName, QString direction);
|
void setConnectionMap(QString mapName);
|
||||||
void addNewConnection();
|
void addNewConnection();
|
||||||
void removeCurrentConnection();
|
void removeCurrentConnection();
|
||||||
void updateDiveMap(QString mapName);
|
void updateDiveMap(QString mapName);
|
||||||
|
@ -70,7 +70,7 @@ public:
|
||||||
QGraphicsScene *scene = NULL;
|
QGraphicsScene *scene = NULL;
|
||||||
QGraphicsPixmapItem *current_view = NULL;
|
QGraphicsPixmapItem *current_view = NULL;
|
||||||
MapPixmapItem *map_item = NULL;
|
MapPixmapItem *map_item = NULL;
|
||||||
ConnectionPixmapItem* current_connection_edit_item = NULL;
|
ConnectionPixmapItem* selected_connection_item = NULL;
|
||||||
QList<ConnectionPixmapItem*> connection_edit_items;
|
QList<ConnectionPixmapItem*> connection_edit_items;
|
||||||
CollisionPixmapItem *collision_item = NULL;
|
CollisionPixmapItem *collision_item = NULL;
|
||||||
QGraphicsItemGroup *objects_group = NULL;
|
QGraphicsItemGroup *objects_group = NULL;
|
||||||
|
|
|
@ -785,7 +785,7 @@ void MainWindow::on_spinBox_ConnectionOffset_valueChanged(int offset)
|
||||||
|
|
||||||
void MainWindow::on_comboBox_ConnectedMap_currentTextChanged(const QString &mapName)
|
void MainWindow::on_comboBox_ConnectedMap_currentTextChanged(const QString &mapName)
|
||||||
{
|
{
|
||||||
editor->updateConnectionMap(mapName, ui->comboBox_ConnectionDirection->currentText().toLower());
|
editor->setConnectionMap(mapName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_pushButton_AddConnection_clicked()
|
void MainWindow::on_pushButton_AddConnection_clicked()
|
||||||
|
|
Loading…
Reference in a new issue