77 lines
1.5 KiB
C++
77 lines
1.5 KiB
C++
#ifndef GUARD_REGIONMAPGENERATOR_H
|
|
#define GUARD_REGIONMAPGENERATOR_H
|
|
|
|
#include "project.h"
|
|
#include "regionmap.h"
|
|
#include "map.h"
|
|
|
|
#include <QDebug>
|
|
#include <QString>
|
|
#include <QVector>
|
|
#include <QStack>
|
|
#include <QPair>
|
|
#include <QSet>
|
|
|
|
class GeneratorEntry
|
|
{
|
|
GeneratorEntry(QString name_, int x_, int y_, int width_, int height_) {
|
|
this->name = name_;
|
|
this->x = x_;
|
|
this->y = y_;
|
|
this->width = width_;
|
|
this->height = height_;
|
|
}
|
|
int x;
|
|
int y;
|
|
int width;
|
|
int height;
|
|
QString name;
|
|
friend class RegionMapGenerator;
|
|
public:
|
|
friend QDebug operator<<(QDebug, const GeneratorEntry &);
|
|
};
|
|
|
|
class RegionMapGenerator
|
|
{
|
|
//
|
|
public:
|
|
//
|
|
RegionMapGenerator() = default;
|
|
RegionMapGenerator(Project *);
|
|
~RegionMapGenerator() {};
|
|
|
|
Project *project = nullptr;
|
|
|
|
QVector<RegionMapSquare> map_squares;
|
|
|
|
QStack<QPair<QString, int>> forks;//?
|
|
QSet<MapConnection> connections;//
|
|
// <MapConnection>
|
|
|
|
void generate(QString);
|
|
|
|
void center();// center the map squares so they arent hanging over
|
|
|
|
private:
|
|
//
|
|
int square_block_width_ = 20;
|
|
int square_block_height_ = 20;
|
|
|
|
int width_;
|
|
int height_;
|
|
|
|
//QPoint
|
|
|
|
QList<struct RegionMapEntry> entries_;
|
|
QMap<QString, GeneratorEntry> entries;
|
|
|
|
void bfs(int);// breadth first search of a graph
|
|
void search(int);
|
|
void dfs(int, QVector<bool> &);// depth first search
|
|
void sort();
|
|
void ts();// topological sort
|
|
void populateSquares();
|
|
|
|
};
|
|
|
|
#endif // GUARD_REGIONMAPGENERATOR_H
|