#pragma once
#ifndef MAPCONNECTION_H
#define MAPCONNECTION_H

#include <QString>
#include <QObject>

class MapConnection : public QObject
{
    Q_OBJECT
public:
    MapConnection(const QString &direction, const QString &hostMapName, const QString &targetMapName, int offset = 0);

    QString direction() const { return m_direction; }
    void setDirection(const QString &direction);

    QString hostMapName() const { return m_hostMapName; }
    void setHostMapName(const QString &hostMapName);

    QString targetMapName() const { return m_targetMapName; }
    void setTargetMapName(const QString &targetMapName);

    int offset() const { return m_offset; }
    void setOffset(int offset);

    MapConnection * createMirror();
    bool isMirror(const MapConnection*);

    static const QStringList cardinalDirections;
    static bool isCardinal(const QString &direction);
    static bool isHorizontal(const QString &direction);
    static bool isVertical(const QString &direction);

private:
    QString m_direction;
    QString m_hostMapName;
    QString m_targetMapName;
    int m_offset;

signals:
    void directionChanged(const QString &before, const QString &after);
    void targetMapNameChanged(const QString &before, const QString &after);
    void hostMapNameChanged(const QString &before, const QString &after);
    void offsetChanged(int before, int after);
};

#endif // MAPCONNECTION_H