Rename Connection to MapConnection and move to core

This commit is contained in:
Marcus Huderle 2018-09-24 11:02:50 -05:00
parent 24e79eb94e
commit d61d33f47f
7 changed files with 52 additions and 44 deletions

14
core/mapconnection.h Normal file
View file

@ -0,0 +1,14 @@
#ifndef MAPCONNECTION_H
#define MAPCONNECTION_H
#include <QString>
#include <QDebug>
class MapConnection {
public:
QString direction;
QString offset;
QString map_name;
};
#endif // MAPCONNECTION_H

View file

@ -1,5 +1,6 @@
#include "editor.h" #include "editor.h"
#include "event.h" #include "event.h"
#include "core/mapconnection.h"
#include <QCheckBox> #include <QCheckBox>
#include <QPainter> #include <QPainter>
#include <QMouseEvent> #include <QMouseEvent>
@ -130,7 +131,7 @@ void Editor::setDiveEmergeControls() {
ui->comboBox_EmergeMap->blockSignals(true); ui->comboBox_EmergeMap->blockSignals(true);
ui->comboBox_DiveMap->setCurrentText(""); ui->comboBox_DiveMap->setCurrentText("");
ui->comboBox_EmergeMap->setCurrentText(""); ui->comboBox_EmergeMap->setCurrentText("");
for (Connection* connection : map->connections) { for (MapConnection* connection : map->connections) {
if (connection->direction == "dive") { if (connection->direction == "dive") {
ui->comboBox_DiveMap->setCurrentText(connection->map_name); ui->comboBox_DiveMap->setCurrentText(connection->map_name);
} else if (connection->direction == "emerge") { } else if (connection->direction == "emerge") {
@ -223,7 +224,7 @@ void Editor::updateCurrentConnectionDirection(QString curDirection) {
updateMirroredConnectionDirection(selected_connection_item->connection, originalDirection); updateMirroredConnectionDirection(selected_connection_item->connection, originalDirection);
} }
void Editor::onConnectionMoved(Connection* connection) { void Editor::onConnectionMoved(MapConnection* connection) {
updateMirroredConnectionOffset(connection); updateMirroredConnectionOffset(connection);
onConnectionOffsetChanged(connection->offset.toInt()); onConnectionOffsetChanged(connection->offset.toInt());
} }
@ -235,7 +236,7 @@ void Editor::onConnectionOffsetChanged(int newOffset) {
} }
void Editor::setConnectionEditControlValues(Connection* connection) { void Editor::setConnectionEditControlValues(MapConnection* connection) {
QString mapName = connection ? connection->map_name : ""; QString mapName = connection ? connection->map_name : "";
QString direction = connection ? connection->direction : ""; QString direction = connection ? connection->direction : "";
int offset = connection ? connection->offset.toInt() : 0; int offset = connection ? connection->offset.toInt() : 0;
@ -589,7 +590,7 @@ void Editor::displayMapConnections() {
selected_connection_item = nullptr; selected_connection_item = nullptr;
connection_edit_items.clear(); connection_edit_items.clear();
for (Connection *connection : map->connections) { for (MapConnection *connection : map->connections) {
if (connection->direction == "dive" || connection->direction == "emerge") { if (connection->direction == "dive" || connection->direction == "emerge") {
continue; continue;
} }
@ -601,7 +602,7 @@ void Editor::displayMapConnections() {
} }
} }
void Editor::createConnectionItem(Connection* connection, bool hide) { void Editor::createConnectionItem(MapConnection* connection, bool hide) {
Map *connected_map = project->getMap(connection->map_name); Map *connected_map = project->getMap(connection->map_name);
QPixmap pixmap = connected_map->renderConnection(*connection); QPixmap pixmap = connected_map->renderConnection(*connection);
int offset = connection->offset.toInt(nullptr, 0); int offset = connection->offset.toInt(nullptr, 0);
@ -728,7 +729,7 @@ void Editor::setConnectionMap(QString mapName) {
void Editor::addNewConnection() { void Editor::addNewConnection() {
// Find direction with least number of connections. // Find direction with least number of connections.
QMap<QString, int> directionCounts = QMap<QString, int>({{"up", 0}, {"right", 0}, {"down", 0}, {"left", 0}}); QMap<QString, int> directionCounts = QMap<QString, int>({{"up", 0}, {"right", 0}, {"down", 0}, {"left", 0}});
for (Connection* connection : map->connections) { for (MapConnection* connection : map->connections) {
directionCounts[connection->direction]++; directionCounts[connection->direction]++;
} }
QString minDirection = "up"; QString minDirection = "up";
@ -746,7 +747,7 @@ void Editor::addNewConnection() {
defaultMapName = project->mapNames->value(1); defaultMapName = project->mapNames->value(1);
} }
Connection* newConnection = new Connection; MapConnection* newConnection = new MapConnection;
newConnection->direction = minDirection; newConnection->direction = minDirection;
newConnection->offset = "0"; newConnection->offset = "0";
newConnection->map_name = defaultMapName; newConnection->map_name = defaultMapName;
@ -758,19 +759,19 @@ void Editor::addNewConnection() {
updateMirroredConnection(newConnection, newConnection->direction, newConnection->map_name); updateMirroredConnection(newConnection, newConnection->direction, newConnection->map_name);
} }
void Editor::updateMirroredConnectionOffset(Connection* connection) { void Editor::updateMirroredConnectionOffset(MapConnection* connection) {
updateMirroredConnection(connection, connection->direction, connection->map_name); updateMirroredConnection(connection, connection->direction, connection->map_name);
} }
void Editor::updateMirroredConnectionDirection(Connection* connection, QString originalDirection) { void Editor::updateMirroredConnectionDirection(MapConnection* connection, QString originalDirection) {
updateMirroredConnection(connection, originalDirection, connection->map_name); updateMirroredConnection(connection, originalDirection, connection->map_name);
} }
void Editor::updateMirroredConnectionMap(Connection* connection, QString originalMapName) { void Editor::updateMirroredConnectionMap(MapConnection* connection, QString originalMapName) {
updateMirroredConnection(connection, connection->direction, originalMapName); updateMirroredConnection(connection, connection->direction, originalMapName);
} }
void Editor::removeMirroredConnection(Connection* connection) { void Editor::removeMirroredConnection(MapConnection* connection) {
updateMirroredConnection(connection, connection->direction, connection->map_name, true); updateMirroredConnection(connection, connection->direction, connection->map_name, true);
} }
void Editor::updateMirroredConnection(Connection* connection, QString originalDirection, QString originalMapName, bool isDelete) { void Editor::updateMirroredConnection(MapConnection* connection, QString originalDirection, QString originalMapName, bool isDelete) {
if (!ui->checkBox_MirrorConnections->isChecked()) if (!ui->checkBox_MirrorConnections->isChecked())
return; return;
@ -781,9 +782,9 @@ void Editor::updateMirroredConnection(Connection* connection, QString originalDi
QString oppositeDirection = oppositeDirections.value(originalDirection); QString oppositeDirection = oppositeDirections.value(originalDirection);
// Find the matching connection in the connected map. // Find the matching connection in the connected map.
Connection* mirrorConnection = nullptr; MapConnection* mirrorConnection = nullptr;
Map* otherMap = project->getMap(originalMapName); Map* otherMap = project->getMap(originalMapName);
for (Connection* conn : otherMap->connections) { for (MapConnection* conn : otherMap->connections) {
if (conn->direction == oppositeDirection && conn->map_name == map->name) { if (conn->direction == oppositeDirection && conn->map_name == map->name) {
mirrorConnection = conn; mirrorConnection = conn;
} }
@ -808,7 +809,7 @@ void Editor::updateMirroredConnection(Connection* connection, QString originalDi
// Create a new mirrored connection, if a matching one doesn't already exist. // Create a new mirrored connection, if a matching one doesn't already exist.
if (!mirrorConnection) { if (!mirrorConnection) {
mirrorConnection = new Connection; mirrorConnection = new MapConnection;
mirrorConnection->direction = oppositeDirections.value(connection->direction); mirrorConnection->direction = oppositeDirections.value(connection->direction);
mirrorConnection->map_name = map->name; mirrorConnection->map_name = map->name;
otherMap->connections.append(mirrorConnection); otherMap->connections.append(mirrorConnection);
@ -854,8 +855,8 @@ void Editor::updateDiveEmergeMap(QString mapName, QString direction) {
return; return;
} }
Connection* connection = nullptr; MapConnection* connection = nullptr;
for (Connection* conn : map->connections) { for (MapConnection* conn : map->connections) {
if (conn->direction == direction) { if (conn->direction == direction) {
connection = conn; connection = conn;
break; break;
@ -870,7 +871,7 @@ void Editor::updateDiveEmergeMap(QString mapName, QString direction) {
} }
} else { } else {
if (!connection) { if (!connection) {
connection = new Connection; connection = new MapConnection;
connection->direction = direction; connection->direction = direction;
connection->offset = "0"; connection->offset = "0";
connection->map_name = mapName; connection->map_name = mapName;

View file

@ -9,6 +9,7 @@
#include <QCheckBox> #include <QCheckBox>
#include <QCursor> #include <QCursor>
#include "core/mapconnection.h"
#include "ui/metatileselector.h" #include "ui/metatileselector.h"
#include "ui/movementpermissionsselector.h" #include "ui/movementpermissionsselector.h"
#include "project.h" #include "project.h"
@ -115,18 +116,18 @@ public:
private: private:
void setConnectionItemsVisible(bool); void setConnectionItemsVisible(bool);
void setBorderItemsVisible(bool, qreal = 1); void setBorderItemsVisible(bool, qreal = 1);
void setConnectionEditControlValues(Connection*); void setConnectionEditControlValues(MapConnection*);
void setConnectionEditControlsEnabled(bool); void setConnectionEditControlsEnabled(bool);
void createConnectionItem(Connection* connection, bool hide); void createConnectionItem(MapConnection* connection, bool hide);
void populateConnectionMapPickers(); void populateConnectionMapPickers();
void setDiveEmergeControls(); void setDiveEmergeControls();
void updateDiveEmergeMap(QString mapName, QString direction); void updateDiveEmergeMap(QString mapName, QString direction);
void onConnectionOffsetChanged(int newOffset); void onConnectionOffsetChanged(int newOffset);
void removeMirroredConnection(Connection*); void removeMirroredConnection(MapConnection*);
void updateMirroredConnectionOffset(Connection*); void updateMirroredConnectionOffset(MapConnection*);
void updateMirroredConnectionDirection(Connection*, QString); void updateMirroredConnectionDirection(MapConnection*, QString);
void updateMirroredConnectionMap(Connection*, QString); void updateMirroredConnectionMap(MapConnection*, QString);
void updateMirroredConnection(Connection*, QString, QString, bool isDelete = false); void updateMirroredConnection(MapConnection*, QString, QString, bool isDelete = false);
Event* createNewObjectEvent(); Event* createNewObjectEvent();
Event* createNewWarpEvent(); Event* createNewWarpEvent();
Event* createNewHealLocationEvent(); Event* createNewHealLocationEvent();
@ -139,7 +140,7 @@ private:
private slots: private slots:
void mouseEvent_map(QGraphicsSceneMouseEvent *event, MapPixmapItem *item); void mouseEvent_map(QGraphicsSceneMouseEvent *event, MapPixmapItem *item);
void mouseEvent_collision(QGraphicsSceneMouseEvent *event, CollisionPixmapItem *item); void mouseEvent_collision(QGraphicsSceneMouseEvent *event, CollisionPixmapItem *item);
void onConnectionMoved(Connection*); void onConnectionMoved(MapConnection*);
void onConnectionItemSelected(ConnectionPixmapItem* connectionItem); void onConnectionItemSelected(ConnectionPixmapItem* connectionItem);
void onConnectionItemDoubleClicked(ConnectionPixmapItem* connectionItem); void onConnectionItemDoubleClicked(ConnectionPixmapItem* connectionItem);
void onConnectionDirectionChanged(QString newDirection); void onConnectionDirectionChanged(QString newDirection);
@ -320,7 +321,7 @@ protected:
class ConnectionPixmapItem : public QObject, public QGraphicsPixmapItem { class ConnectionPixmapItem : public QObject, public QGraphicsPixmapItem {
Q_OBJECT Q_OBJECT
public: public:
ConnectionPixmapItem(QPixmap pixmap, Connection* connection, int x, int y, int baseMapWidth, int baseMapHeight): QGraphicsPixmapItem(pixmap) { ConnectionPixmapItem(QPixmap pixmap, MapConnection* connection, int x, int y, int baseMapWidth, int baseMapHeight): QGraphicsPixmapItem(pixmap) {
this->basePixmap = pixmap; this->basePixmap = pixmap;
this->connection = connection; this->connection = connection;
setFlag(ItemIsMovable); setFlag(ItemIsMovable);
@ -344,7 +345,7 @@ public:
int getMinOffset(); int getMinOffset();
int getMaxOffset(); int getMaxOffset();
QPixmap basePixmap; QPixmap basePixmap;
Connection* connection; MapConnection* connection;
int initialX; int initialX;
int initialY; int initialY;
int initialOffset; int initialOffset;
@ -357,7 +358,7 @@ protected:
signals: signals:
void connectionItemSelected(ConnectionPixmapItem* connectionItem); void connectionItemSelected(ConnectionPixmapItem* connectionItem);
void connectionItemDoubleClicked(ConnectionPixmapItem* connectionItem); void connectionItemDoubleClicked(ConnectionPixmapItem* connectionItem);
void connectionMoved(Connection*); void connectionMoved(MapConnection*);
}; };
class BorderMetatilesPixmapItem : public QObject, public QGraphicsPixmapItem { class BorderMetatilesPixmapItem : public QObject, public QGraphicsPixmapItem {

View file

@ -251,7 +251,7 @@ QPixmap Map::renderBorder() {
return layout->border_pixmap; return layout->border_pixmap;
} }
QPixmap Map::renderConnection(Connection connection) { QPixmap Map::renderConnection(MapConnection connection) {
render(); render();
int x, y, w, h; int x, y, w, h;
if (connection.direction == "up") { if (connection.direction == "up") {

15
map.h
View file

@ -4,6 +4,7 @@
#include "core/blockdata.h" #include "core/blockdata.h"
#include "core/history.h" #include "core/history.h"
#include "core/historyitem.h" #include "core/historyitem.h"
#include "core/mapconnection.h"
#include "core/maplayout.h" #include "core/maplayout.h"
#include "core/tileset.h" #include "core/tileset.h"
#include "event.h" #include "event.h"
@ -14,16 +15,6 @@
#include <QGraphicsPixmapItem> #include <QGraphicsPixmapItem>
#include <math.h> #include <math.h>
class Connection {
public:
Connection() {
}
public:
QString direction;
QString offset;
QString map_name;
};
class Map : public QObject class Map : public QObject
{ {
Q_OBJECT Q_OBJECT
@ -102,8 +93,8 @@ public:
void addEvent(Event *event); void addEvent(Event *event);
QMap<QString, QList<Event*>> events; QMap<QString, QList<Event*>> events;
QList<Connection*> connections; QList<MapConnection*> connections;
QPixmap renderConnection(Connection); QPixmap renderConnection(MapConnection);
void setNewDimensionsBlockdata(int newWidth, int newHeight); void setNewDimensionsBlockdata(int newWidth, int newHeight);
void setDimensions(int newWidth, int newHeight, bool setNewBlockData = true); void setDimensions(int newWidth, int newHeight, bool setNewBlockData = true);

View file

@ -43,6 +43,7 @@ HEADERS += core/block.h \
core/heallocation.h \ core/heallocation.h \
core/history.h \ core/history.h \
core/historyitem.h \ core/historyitem.h \
core/mapconnection.h \
core/maplayout.h \ core/maplayout.h \
core/metatile.h \ core/metatile.h \
core/tile.h \ core/tile.h \

View file

@ -96,7 +96,7 @@ void Project::loadMapConnections(Map *map) {
for (QStringList command : *connections) { for (QStringList command : *connections) {
QString macro = command.value(0); QString macro = command.value(0);
if (macro == "connection") { if (macro == "connection") {
Connection *connection = new Connection; MapConnection *connection = new MapConnection;
connection->direction = command.value(1); connection->direction = command.value(1);
connection->offset = command.value(2); connection->offset = command.value(2);
QString mapConstant = command.value(3); QString mapConstant = command.value(3);
@ -240,7 +240,7 @@ void Project::saveMapConnections(Map *map) {
QString connectionsListLabel = QString("%1_MapConnectionsList").arg(map->name); QString connectionsListLabel = QString("%1_MapConnectionsList").arg(map->name);
int numValidConnections = 0; int numValidConnections = 0;
text += QString("%1::\n").arg(connectionsListLabel); text += QString("%1::\n").arg(connectionsListLabel);
for (Connection* connection : map->connections) { for (MapConnection* connection : map->connections) {
if (mapNamesToMapConstants->contains(connection->map_name)) { if (mapNamesToMapConstants->contains(connection->map_name)) {
text += QString("\tconnection %1, %2, %3\n") text += QString("\tconnection %1, %2, %3\n")
.arg(connection->direction) .arg(connection->direction)