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 "event.h"
#include "core/mapconnection.h"
#include <QCheckBox>
#include <QPainter>
#include <QMouseEvent>
@ -130,7 +131,7 @@ void Editor::setDiveEmergeControls() {
ui->comboBox_EmergeMap->blockSignals(true);
ui->comboBox_DiveMap->setCurrentText("");
ui->comboBox_EmergeMap->setCurrentText("");
for (Connection* connection : map->connections) {
for (MapConnection* connection : map->connections) {
if (connection->direction == "dive") {
ui->comboBox_DiveMap->setCurrentText(connection->map_name);
} else if (connection->direction == "emerge") {
@ -223,7 +224,7 @@ void Editor::updateCurrentConnectionDirection(QString curDirection) {
updateMirroredConnectionDirection(selected_connection_item->connection, originalDirection);
}
void Editor::onConnectionMoved(Connection* connection) {
void Editor::onConnectionMoved(MapConnection* connection) {
updateMirroredConnectionOffset(connection);
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 direction = connection ? connection->direction : "";
int offset = connection ? connection->offset.toInt() : 0;
@ -589,7 +590,7 @@ void Editor::displayMapConnections() {
selected_connection_item = nullptr;
connection_edit_items.clear();
for (Connection *connection : map->connections) {
for (MapConnection *connection : map->connections) {
if (connection->direction == "dive" || connection->direction == "emerge") {
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);
QPixmap pixmap = connected_map->renderConnection(*connection);
int offset = connection->offset.toInt(nullptr, 0);
@ -728,7 +729,7 @@ void Editor::setConnectionMap(QString mapName) {
void Editor::addNewConnection() {
// Find direction with least number of connections.
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]++;
}
QString minDirection = "up";
@ -746,7 +747,7 @@ void Editor::addNewConnection() {
defaultMapName = project->mapNames->value(1);
}
Connection* newConnection = new Connection;
MapConnection* newConnection = new MapConnection;
newConnection->direction = minDirection;
newConnection->offset = "0";
newConnection->map_name = defaultMapName;
@ -758,19 +759,19 @@ void Editor::addNewConnection() {
updateMirroredConnection(newConnection, newConnection->direction, newConnection->map_name);
}
void Editor::updateMirroredConnectionOffset(Connection* connection) {
void Editor::updateMirroredConnectionOffset(MapConnection* connection) {
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);
}
void Editor::updateMirroredConnectionMap(Connection* connection, QString originalMapName) {
void Editor::updateMirroredConnectionMap(MapConnection* connection, QString originalMapName) {
updateMirroredConnection(connection, connection->direction, originalMapName);
}
void Editor::removeMirroredConnection(Connection* connection) {
void Editor::removeMirroredConnection(MapConnection* connection) {
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())
return;
@ -781,9 +782,9 @@ void Editor::updateMirroredConnection(Connection* connection, QString originalDi
QString oppositeDirection = oppositeDirections.value(originalDirection);
// Find the matching connection in the connected map.
Connection* mirrorConnection = nullptr;
MapConnection* mirrorConnection = nullptr;
Map* otherMap = project->getMap(originalMapName);
for (Connection* conn : otherMap->connections) {
for (MapConnection* conn : otherMap->connections) {
if (conn->direction == oppositeDirection && conn->map_name == map->name) {
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.
if (!mirrorConnection) {
mirrorConnection = new Connection;
mirrorConnection = new MapConnection;
mirrorConnection->direction = oppositeDirections.value(connection->direction);
mirrorConnection->map_name = map->name;
otherMap->connections.append(mirrorConnection);
@ -854,8 +855,8 @@ void Editor::updateDiveEmergeMap(QString mapName, QString direction) {
return;
}
Connection* connection = nullptr;
for (Connection* conn : map->connections) {
MapConnection* connection = nullptr;
for (MapConnection* conn : map->connections) {
if (conn->direction == direction) {
connection = conn;
break;
@ -870,7 +871,7 @@ void Editor::updateDiveEmergeMap(QString mapName, QString direction) {
}
} else {
if (!connection) {
connection = new Connection;
connection = new MapConnection;
connection->direction = direction;
connection->offset = "0";
connection->map_name = mapName;

View file

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

View file

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

15
map.h
View file

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

View file

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

View file

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