region map ui updates and other fixes
This commit is contained in:
parent
41f3780c8a
commit
a951fc85da
12 changed files with 1267 additions and 1068 deletions
File diff suppressed because it is too large
Load diff
|
@ -2,6 +2,7 @@
|
||||||
#define HISTORYITEM_H
|
#define HISTORYITEM_H
|
||||||
|
|
||||||
#include "blockdata.h"
|
#include "blockdata.h"
|
||||||
|
//#include "regionmap.h"
|
||||||
|
|
||||||
class HistoryItem {
|
class HistoryItem {
|
||||||
public:
|
public:
|
||||||
|
@ -15,15 +16,19 @@ public:
|
||||||
enum RegionMapEditorBox {
|
enum RegionMapEditorBox {
|
||||||
BackgroundImage = 1,
|
BackgroundImage = 1,
|
||||||
CityMapImage = 2,
|
CityMapImage = 2,
|
||||||
|
BackroundResize = 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
class RegionMapHistoryItem {
|
class RegionMapHistoryItem {
|
||||||
public:
|
public:
|
||||||
int which;// region map or city map
|
int which;
|
||||||
int index;
|
int mapWidth;
|
||||||
unsigned tile;
|
int mapHeight;
|
||||||
unsigned prev;
|
QVector<uint8_t> tiles;
|
||||||
RegionMapHistoryItem(int type, int index, unsigned prev, unsigned tile);
|
QString cityMap;
|
||||||
|
RegionMapHistoryItem(int type, QVector<uint8_t> tiles);
|
||||||
|
RegionMapHistoryItem(int type, QVector<uint8_t> tiles, QString cityMap);
|
||||||
|
RegionMapHistoryItem(int type, QVector<uint8_t> tiles, int width, int height);
|
||||||
~RegionMapHistoryItem();
|
~RegionMapHistoryItem();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#ifndef REGIONMAP_H
|
#ifndef REGIONMAP_H
|
||||||
#define REGIONMAP_H
|
#define REGIONMAP_H
|
||||||
|
|
||||||
#include "project.h"
|
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
#include "project.h"
|
||||||
#include "tilemaptileselector.h"
|
#include "tilemaptileselector.h"
|
||||||
#include "history.h"
|
#include "history.h"
|
||||||
#include "historyitem.h"
|
#include "historyitem.h"
|
||||||
|
@ -94,6 +94,7 @@ public:
|
||||||
|
|
||||||
QString newAbbr(QString);// makes a *unique* 5 character abbreviation from mapname to add to mapname_abbr
|
QString newAbbr(QString);// makes a *unique* 5 character abbreviation from mapname to add to mapname_abbr
|
||||||
|
|
||||||
|
// TODO: did I use these like, at all?
|
||||||
// editing functions
|
// editing functions
|
||||||
// if they are booleans, returns true if successful?
|
// if they are booleans, returns true if successful?
|
||||||
bool placeTile(char, int, int);// place tile at x, y
|
bool placeTile(char, int, int);// place tile at x, y
|
||||||
|
@ -111,12 +112,16 @@ public:
|
||||||
void resize(int, int);
|
void resize(int, int);
|
||||||
void setWidth(int);
|
void setWidth(int);
|
||||||
void setHeight(int);
|
void setHeight(int);
|
||||||
|
void setBackgroundImageData(QVector<uint8_t> *);
|
||||||
int width();
|
int width();
|
||||||
int height();
|
int height();
|
||||||
QSize imgSize();
|
QSize imgSize();
|
||||||
unsigned getTileId(int, int);
|
unsigned getTileId(int, int);
|
||||||
int getMapSquareIndex(int, int);
|
int getMapSquareIndex(int, int);
|
||||||
|
|
||||||
|
QVector<uint8_t> getTiles();
|
||||||
|
void setTiles(QVector<uint8_t>);
|
||||||
|
|
||||||
void resetSquare(int);
|
void resetSquare(int);
|
||||||
|
|
||||||
// TODO: move read / write functions to private (and others)
|
// TODO: move read / write functions to private (and others)
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
#include <QGraphicsPixmapItem>
|
#include <QGraphicsPixmapItem>
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
||||||
|
#include <QVector>
|
||||||
|
|
||||||
class CityMapPixmapItem : public QObject, public QGraphicsPixmapItem {
|
class CityMapPixmapItem : public QObject, public QGraphicsPixmapItem {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -30,6 +31,9 @@ public:
|
||||||
int width();
|
int width();
|
||||||
int height();
|
int height();
|
||||||
|
|
||||||
|
QVector<uint8_t> getTiles();
|
||||||
|
void setTiles(QVector<uint8_t>);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int width_;
|
int width_;
|
||||||
int height_;
|
int height_;
|
||||||
|
@ -41,6 +45,8 @@ signals:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mousePressEvent(QGraphicsSceneMouseEvent*);
|
void mousePressEvent(QGraphicsSceneMouseEvent*);
|
||||||
|
void mouseMoveEvent(QGraphicsSceneMouseEvent*);
|
||||||
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent*);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CITYMAPPIXMAPITEM_H
|
#endif // CITYMAPPIXMAPITEM_H
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QGraphicsSceneMouseEvent>
|
#include <QGraphicsSceneMouseEvent>
|
||||||
#include <QCloseEvent>
|
#include <QCloseEvent>
|
||||||
|
#include <QResizeEvent>
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class RegionMapEditor;
|
class RegionMapEditor;
|
||||||
|
@ -53,13 +54,15 @@ private:
|
||||||
unsigned selectedCityTile;
|
unsigned selectedCityTile;
|
||||||
unsigned selectedImageTile;
|
unsigned selectedImageTile;
|
||||||
|
|
||||||
|
bool hasUnsavedChanges = false;
|
||||||
|
|
||||||
double scaleUpFactor = 2.0;
|
double scaleUpFactor = 2.0;
|
||||||
double scaleDownFactor = 1.0 / scaleUpFactor;
|
double scaleDownFactor = 1.0 / scaleUpFactor;
|
||||||
|
|
||||||
double scaleRegionMapTiles = 1.0;
|
int scaleRegionMapTiles = 1;
|
||||||
double scaleRegionMapImage = 1.0;
|
int scaleRegionMapImage = 1;
|
||||||
double scaleCityMapTiles = 1.0;
|
int scaleCityMapTiles = 1;
|
||||||
double scaleCityMapImage = 1.0;
|
int scaleCityMapImage = 1;
|
||||||
|
|
||||||
QGraphicsScene *scene_region_map_image = nullptr;
|
QGraphicsScene *scene_region_map_image = nullptr;
|
||||||
QGraphicsScene *scene_city_map_image = nullptr;
|
QGraphicsScene *scene_city_map_image = nullptr;
|
||||||
|
@ -85,6 +88,8 @@ private:
|
||||||
|
|
||||||
bool createCityMap(QString);
|
bool createCityMap(QString);
|
||||||
|
|
||||||
|
void closeEvent(QCloseEvent*);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_action_RegionMap_Save_triggered();
|
void on_action_RegionMap_Save_triggered();
|
||||||
void on_action_RegionMap_Undo_triggered();
|
void on_action_RegionMap_Undo_triggered();
|
||||||
|
@ -92,21 +97,17 @@ private slots:
|
||||||
void on_action_RegionMap_Resize_triggered();
|
void on_action_RegionMap_Resize_triggered();
|
||||||
void on_action_RegionMap_Generate_triggered();
|
void on_action_RegionMap_Generate_triggered();
|
||||||
void on_tabWidget_Region_Map_currentChanged(int);
|
void on_tabWidget_Region_Map_currentChanged(int);
|
||||||
void on_pushButton_RM_Options_save_clicked();
|
|
||||||
void on_pushButton_RM_Options_delete_clicked();
|
void on_pushButton_RM_Options_delete_clicked();
|
||||||
void on_pushButton_CityMap_save_clicked();
|
void on_comboBox_RM_ConnectedMap_activated(const QString &);
|
||||||
void on_pushButton_CityMap_add_clicked();
|
void on_pushButton_CityMap_add_clicked();
|
||||||
void on_pushButton_Zoom_In_Image_Tiles_clicked();
|
void on_verticalSlider_Zoom_Map_Image_valueChanged(int);
|
||||||
void on_pushButton_Zoom_Out_Image_Tiles_clicked();
|
void on_verticalSlider_Zoom_Image_Tiles_valueChanged(int);
|
||||||
void on_pushButton_Zoom_In_City_Tiles_clicked();
|
void on_verticalSlider_Zoom_City_Map_valueChanged(int);
|
||||||
void on_pushButton_Zoom_Out_City_Tiles_clicked();
|
void on_verticalSlider_Zoom_City_Tiles_valueChanged(int);
|
||||||
void on_pushButton_Zoom_In_City_Map_clicked();
|
|
||||||
void on_pushButton_Zoom_Out_City_Map_clicked();
|
|
||||||
void on_pushButton_Zoom_In_Map_Image_clicked();
|
|
||||||
void on_pushButton_Zoom_Out_Map_Image_clicked();
|
|
||||||
void on_comboBox_CityMap_picker_currentTextChanged(const QString &);
|
void on_comboBox_CityMap_picker_currentTextChanged(const QString &);
|
||||||
void on_spinBox_RM_Options_x_valueChanged(int);
|
void on_spinBox_RM_Options_x_valueChanged(int);
|
||||||
void on_spinBox_RM_Options_y_valueChanged(int);
|
void on_spinBox_RM_Options_y_valueChanged(int);
|
||||||
|
void on_lineEdit_RM_MapName_textEdited(const QString &);
|
||||||
void onHoveredRegionMapTileChanged(int, int);
|
void onHoveredRegionMapTileChanged(int, int);
|
||||||
void onHoveredRegionMapTileCleared();
|
void onHoveredRegionMapTileCleared();
|
||||||
void mouseEvent_region_map(QGraphicsSceneMouseEvent *, RegionMapPixmapItem *);
|
void mouseEvent_region_map(QGraphicsSceneMouseEvent *, RegionMapPixmapItem *);
|
||||||
|
|
|
@ -19,7 +19,7 @@ public:
|
||||||
int pixelWidth;
|
int pixelWidth;
|
||||||
int pixelHeight;
|
int pixelHeight;
|
||||||
|
|
||||||
unsigned selectedTile;
|
unsigned selectedTile = 0;
|
||||||
|
|
||||||
// TODO: which of these need to be made public?
|
// TODO: which of these need to be made public?
|
||||||
// call this tilemap? or is tilemap the binary file?
|
// call this tilemap? or is tilemap the binary file?
|
||||||
|
|
|
@ -10,11 +10,22 @@ HistoryItem::~HistoryItem() {
|
||||||
if (this->metatiles) delete this->metatiles;
|
if (this->metatiles) delete this->metatiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
RegionMapHistoryItem::RegionMapHistoryItem(int which_, int index_, unsigned prev_, unsigned tile_) {
|
RegionMapHistoryItem::RegionMapHistoryItem(int which, QVector<uint8_t> tiles) {
|
||||||
this->which = which_;
|
this->which = which;
|
||||||
this->index = index_;
|
this->tiles = tiles;
|
||||||
this->prev = prev_;
|
}
|
||||||
this->tile = tile_;
|
|
||||||
|
RegionMapHistoryItem::RegionMapHistoryItem(int which, QVector<uint8_t> tiles, QString cityMap) {
|
||||||
|
this->which = which;
|
||||||
|
this->tiles = tiles;
|
||||||
|
this->cityMap = cityMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
RegionMapHistoryItem::RegionMapHistoryItem(int which, QVector<uint8_t> tiles, int width, int height) {
|
||||||
|
this->which = which;
|
||||||
|
this->tiles = tiles;
|
||||||
|
this->mapWidth = width;
|
||||||
|
this->mapHeight = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
RegionMapHistoryItem::~RegionMapHistoryItem() {}
|
RegionMapHistoryItem::~RegionMapHistoryItem() {}
|
||||||
|
|
|
@ -79,6 +79,7 @@ void RegionMap::readLayout() {
|
||||||
QMap<QString, QString> *qmap = new QMap<QString, QString>;
|
QMap<QString, QString> *qmap = new QMap<QString, QString>;
|
||||||
|
|
||||||
QTextStream in(&file);
|
QTextStream in(&file);
|
||||||
|
in.setCodec("UTF-8");
|
||||||
while (!in.atEnd()) {
|
while (!in.atEnd()) {
|
||||||
line = in.readLine();
|
line = in.readLine();
|
||||||
if (line.startsWith("static const u8")) {
|
if (line.startsWith("static const u8")) {
|
||||||
|
@ -182,7 +183,29 @@ int RegionMap::height() {
|
||||||
}
|
}
|
||||||
|
|
||||||
QSize RegionMap::imgSize() {
|
QSize RegionMap::imgSize() {
|
||||||
return QSize(img_width_ * 8 + 2, img_height_ * 8 + 2);
|
return QSize(img_width_ * 8, img_height_ * 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
QVector<uint8_t> RegionMap::getTiles() {
|
||||||
|
//
|
||||||
|
QVector<uint8_t> tileIds;
|
||||||
|
for (auto square : map_squares) {
|
||||||
|
tileIds.append(square.tile_img_id);
|
||||||
|
}
|
||||||
|
return tileIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RegionMap::setTiles(QVector<uint8_t> tileIds) {
|
||||||
|
//
|
||||||
|
if (tileIds.size() != map_squares.size()) {
|
||||||
|
qDebug() << "YOU SHOULD RESIZE";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int i = 0;
|
||||||
|
for (uint8_t tileId : tileIds) {
|
||||||
|
map_squares[i].tile_img_id = tileId;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: rename to getTileIdAt()?
|
// TODO: rename to getTileIdAt()?
|
||||||
|
|
|
@ -62,6 +62,39 @@ void CityMapPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event) {
|
||||||
emit mouseEvent(event, this);
|
emit mouseEvent(event, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CityMapPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
|
||||||
|
QPointF pos = event->pos();
|
||||||
|
int x = static_cast<int>(pos.x()) / 8;
|
||||||
|
int y = static_cast<int>(pos.y()) / 8;
|
||||||
|
if (x < width_ && x >= 0
|
||||||
|
&& y < height_ && y >= 0) {
|
||||||
|
emit this->hoveredRegionMapTileChanged(x, y);
|
||||||
|
emit mouseEvent(event, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CityMapPixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
|
||||||
|
emit mouseEvent(event, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
QVector<uint8_t> CityMapPixmapItem::getTiles() {
|
||||||
|
//
|
||||||
|
QVector<uint8_t> tiles;
|
||||||
|
for (auto tile : data) {
|
||||||
|
tiles.append(tile);
|
||||||
|
}
|
||||||
|
return tiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CityMapPixmapItem::setTiles(QVector<uint8_t> tiles) {
|
||||||
|
//
|
||||||
|
QByteArray newData;
|
||||||
|
for (auto tile : tiles) {
|
||||||
|
newData.append(tile);
|
||||||
|
}
|
||||||
|
this->data = newData;
|
||||||
|
}
|
||||||
|
|
||||||
int CityMapPixmapItem::getIndexAt(int x, int y) {
|
int CityMapPixmapItem::getIndexAt(int x, int y) {
|
||||||
return 2 * (x + y * this->width_);
|
return 2 * (x + y * this->width_);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,15 +9,16 @@
|
||||||
#include <QFormLayout>
|
#include <QFormLayout>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
|
#include <QMessageBox>
|
||||||
|
#include <QDialogButtonBox>
|
||||||
|
|
||||||
RegionMapEditor::RegionMapEditor(QWidget *parent, Project *pro) :
|
RegionMapEditor::RegionMapEditor(QWidget *parent, Project *project_) :
|
||||||
QMainWindow(parent),
|
QMainWindow(parent),
|
||||||
ui(new Ui::RegionMapEditor)
|
ui(new Ui::RegionMapEditor)
|
||||||
{
|
{
|
||||||
this->ui->setupUi(this);
|
this->ui->setupUi(this);
|
||||||
this->project = pro;
|
this->project = project_;
|
||||||
this->region_map = new RegionMap;
|
this->region_map = new RegionMap;
|
||||||
this->setFixedSize(this->size());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RegionMapEditor::~RegionMapEditor()
|
RegionMapEditor::~RegionMapEditor()
|
||||||
|
@ -39,8 +40,18 @@ RegionMapEditor::~RegionMapEditor()
|
||||||
void RegionMapEditor::on_action_RegionMap_Save_triggered() {
|
void RegionMapEditor::on_action_RegionMap_Save_triggered() {
|
||||||
if (project && region_map) {
|
if (project && region_map) {
|
||||||
region_map->save();
|
region_map->save();
|
||||||
|
this->city_map_item->save();
|
||||||
|
this->region_map->saveOptions(
|
||||||
|
this->region_map_layout_item->selectedTile,
|
||||||
|
this->ui->comboBox_RM_ConnectedMap->currentText(),
|
||||||
|
this->ui->lineEdit_RM_MapName->text(),
|
||||||
|
this->ui->spinBox_RM_Options_x->value(),
|
||||||
|
this->ui->spinBox_RM_Options_y->value()
|
||||||
|
);
|
||||||
|
this->region_map_layout_item->highlightedTile = -1;
|
||||||
displayRegionMap();
|
displayRegionMap();
|
||||||
}
|
}
|
||||||
|
this->hasUnsavedChanges = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::loadRegionMapData() {
|
void RegionMapEditor::loadRegionMapData() {
|
||||||
|
@ -90,7 +101,11 @@ void RegionMapEditor::displayRegionMapImage() {
|
||||||
this->scene_region_map_image->setSceneRect(this->scene_region_map_image->itemsBoundingRect());
|
this->scene_region_map_image->setSceneRect(this->scene_region_map_image->itemsBoundingRect());
|
||||||
|
|
||||||
this->ui->graphicsView_Region_Map_BkgImg->setScene(this->scene_region_map_image);
|
this->ui->graphicsView_Region_Map_BkgImg->setScene(this->scene_region_map_image);
|
||||||
this->ui->graphicsView_Region_Map_BkgImg->setFixedSize(this->region_map->imgSize() * scaleRegionMapImage);
|
this->ui->graphicsView_Region_Map_BkgImg->setFixedSize(this->region_map->imgSize().width() * scaleRegionMapImage + 2,
|
||||||
|
this->region_map->imgSize().height() * scaleRegionMapImage + 2);
|
||||||
|
|
||||||
|
RegionMapHistoryItem *commit = new RegionMapHistoryItem(RegionMapEditorBox::BackgroundImage, this->region_map->getTiles());
|
||||||
|
history.push(commit);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::displayRegionMapLayout() {
|
void RegionMapEditor::displayRegionMapLayout() {
|
||||||
|
@ -118,7 +133,8 @@ void RegionMapEditor::displayRegionMapLayout() {
|
||||||
this->scene_region_map_layout->setSceneRect(this->scene_region_map_layout->itemsBoundingRect());
|
this->scene_region_map_layout->setSceneRect(this->scene_region_map_layout->itemsBoundingRect());
|
||||||
|
|
||||||
this->ui->graphicsView_Region_Map_Layout->setScene(this->scene_region_map_layout);
|
this->ui->graphicsView_Region_Map_Layout->setScene(this->scene_region_map_layout);
|
||||||
this->ui->graphicsView_Region_Map_Layout->setFixedSize(this->region_map->imgSize() * scaleRegionMapImage);
|
this->ui->graphicsView_Region_Map_Layout->setFixedSize(this->region_map->imgSize().width() * scaleRegionMapImage + 2,
|
||||||
|
this->region_map->imgSize().height() * scaleRegionMapImage + 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::displayRegionMapLayoutOptions() {
|
void RegionMapEditor::displayRegionMapLayoutOptions() {
|
||||||
|
@ -135,17 +151,23 @@ void RegionMapEditor::displayRegionMapLayoutOptions() {
|
||||||
);
|
);
|
||||||
|
|
||||||
updateRegionMapLayoutOptions(currIndex);
|
updateRegionMapLayoutOptions(currIndex);
|
||||||
|
|
||||||
|
// TODO: implement when the code is decompiled
|
||||||
|
this->ui->label_RM_CityMap->setVisible(false);
|
||||||
|
this->ui->comboBox_RM_CityMap->setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::updateRegionMapLayoutOptions(int index) {
|
void RegionMapEditor::updateRegionMapLayoutOptions(int index) {
|
||||||
this->ui->spinBox_RM_Options_x->blockSignals(true);
|
this->ui->spinBox_RM_Options_x->blockSignals(true);
|
||||||
this->ui->spinBox_RM_Options_y->blockSignals(true);
|
this->ui->spinBox_RM_Options_y->blockSignals(true);
|
||||||
|
this->ui->comboBox_RM_ConnectedMap->blockSignals(true);
|
||||||
this->ui->lineEdit_RM_MapName->setText(this->project->mapSecToMapHoverName->value(this->region_map->map_squares[index].mapsec));
|
this->ui->lineEdit_RM_MapName->setText(this->project->mapSecToMapHoverName->value(this->region_map->map_squares[index].mapsec));
|
||||||
this->ui->comboBox_RM_ConnectedMap->setCurrentText(this->region_map->map_squares[index].mapsec);
|
this->ui->comboBox_RM_ConnectedMap->setCurrentText(this->region_map->map_squares[index].mapsec);
|
||||||
this->ui->spinBox_RM_Options_x->setValue(this->region_map->map_squares[index].x);
|
this->ui->spinBox_RM_Options_x->setValue(this->region_map->map_squares[index].x);
|
||||||
this->ui->spinBox_RM_Options_y->setValue(this->region_map->map_squares[index].y);
|
this->ui->spinBox_RM_Options_y->setValue(this->region_map->map_squares[index].y);
|
||||||
this->ui->spinBox_RM_Options_x->blockSignals(false);
|
this->ui->spinBox_RM_Options_x->blockSignals(false);
|
||||||
this->ui->spinBox_RM_Options_y->blockSignals(false);
|
this->ui->spinBox_RM_Options_y->blockSignals(false);
|
||||||
|
this->ui->comboBox_RM_ConnectedMap->blockSignals(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::displayRegionMapTileSelector() {
|
void RegionMapEditor::displayRegionMapTileSelector() {
|
||||||
|
@ -223,6 +245,11 @@ void RegionMapEditor::displayCityMap(QString f) {
|
||||||
this->ui->graphicsView_City_Map->setScene(scene_city_map_image);
|
this->ui->graphicsView_City_Map->setScene(scene_city_map_image);
|
||||||
this->ui->graphicsView_City_Map->setFixedSize(8 * city_map_item->width() * scaleCityMapImage + 2,
|
this->ui->graphicsView_City_Map->setFixedSize(8 * city_map_item->width() * scaleCityMapImage + 2,
|
||||||
8 * city_map_item->height() * scaleCityMapImage + 2);
|
8 * city_map_item->height() * scaleCityMapImage + 2);
|
||||||
|
|
||||||
|
RegionMapHistoryItem *commit = new RegionMapHistoryItem(
|
||||||
|
RegionMapEditorBox::CityMapImage, this->city_map_item->getTiles(), this->city_map_item->file
|
||||||
|
);
|
||||||
|
history.push(commit);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RegionMapEditor::createCityMap(QString name) {
|
bool RegionMapEditor::createCityMap(QString name) {
|
||||||
|
@ -313,35 +340,53 @@ void RegionMapEditor::onHoveredRegionMapTileCleared() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::mouseEvent_region_map(QGraphicsSceneMouseEvent *event, RegionMapPixmapItem *item) {
|
void RegionMapEditor::mouseEvent_region_map(QGraphicsSceneMouseEvent *event, RegionMapPixmapItem *item) {
|
||||||
|
QPointF pos = event->pos();
|
||||||
|
int x = static_cast<int>(pos.x()) / 8;
|
||||||
|
int y = static_cast<int>(pos.y()) / 8;
|
||||||
|
int index = this->region_map->getMapSquareIndex(x, y);
|
||||||
|
if (index > this->region_map->map_squares.size() - 1) return;
|
||||||
|
|
||||||
if (event->buttons() & Qt::RightButton) {
|
if (event->buttons() & Qt::RightButton) {
|
||||||
item->select(event);
|
item->select(event);
|
||||||
//} else if (event->buttons() & Qt::MiddleButton) {// TODO
|
//} else if (event->buttons() & Qt::MiddleButton) {// TODO
|
||||||
} else {
|
} else {
|
||||||
QPointF pos = event->pos();
|
|
||||||
int x = static_cast<int>(pos.x()) / 8;
|
|
||||||
int y = static_cast<int>(pos.y()) / 8;
|
|
||||||
int index = this->region_map->getMapSquareIndex(x, y);
|
|
||||||
if (index > this->region_map->map_squares.size() - 1) return;
|
|
||||||
RegionMapHistoryItem *commit = new RegionMapHistoryItem(RegionMapEditorBox::BackgroundImage, index,
|
|
||||||
this->region_map->map_squares[index].tile_img_id, this->mapsquare_selector_item->getSelectedTile());
|
|
||||||
history.push(commit);
|
|
||||||
item->paint(event);
|
item->paint(event);
|
||||||
|
this->hasUnsavedChanges = true;
|
||||||
|
if (event->type() == QEvent::GraphicsSceneMouseRelease) {
|
||||||
|
RegionMapHistoryItem *current = history.current();
|
||||||
|
bool addToHistory = !(current && current->tiles == this->region_map->getTiles());
|
||||||
|
if (addToHistory) {
|
||||||
|
RegionMapHistoryItem *commit = new RegionMapHistoryItem(
|
||||||
|
RegionMapEditorBox::BackgroundImage, this->region_map->getTiles()
|
||||||
|
);
|
||||||
|
history.push(commit);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::mouseEvent_city_map(QGraphicsSceneMouseEvent *event, CityMapPixmapItem *item) {
|
void RegionMapEditor::mouseEvent_city_map(QGraphicsSceneMouseEvent *event, CityMapPixmapItem *item) {
|
||||||
//
|
//
|
||||||
|
QPointF pos = event->pos();
|
||||||
|
int x = static_cast<int>(pos.x()) / 8;
|
||||||
|
int y = static_cast<int>(pos.y()) / 8;
|
||||||
|
int index = this->city_map_item->getIndexAt(x, y);
|
||||||
|
|
||||||
if (event->buttons() & Qt::RightButton) {// TODO
|
if (event->buttons() & Qt::RightButton) {// TODO
|
||||||
//} else if (event->buttons() & Qt::MiddleButton) {// TODO
|
//} else if (event->buttons() & Qt::MiddleButton) {// TODO
|
||||||
} else {
|
} else {
|
||||||
QPointF pos = event->pos();
|
|
||||||
int x = static_cast<int>(pos.x()) / 8;
|
|
||||||
int y = static_cast<int>(pos.y()) / 8;
|
|
||||||
int index = this->city_map_item->getIndexAt(x, y);
|
|
||||||
RegionMapHistoryItem *commit = new RegionMapHistoryItem(RegionMapEditorBox::CityMapImage, index,
|
|
||||||
this->city_map_item->data[index], this->city_map_selector_item->getSelectedTile());
|
|
||||||
history.push(commit);
|
|
||||||
item->paint(event);
|
item->paint(event);
|
||||||
|
this->hasUnsavedChanges = true;
|
||||||
|
if (event->type() == QEvent::GraphicsSceneMouseRelease) {
|
||||||
|
RegionMapHistoryItem *current = history.current();
|
||||||
|
bool addToHistory = !(current && current->tiles == this->city_map_item->getTiles());
|
||||||
|
if (addToHistory) {
|
||||||
|
RegionMapHistoryItem *commit = new RegionMapHistoryItem(
|
||||||
|
RegionMapEditorBox::CityMapImage, this->city_map_item->getTiles(), this->city_map_item->file
|
||||||
|
);
|
||||||
|
history.push(commit);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -350,12 +395,10 @@ void RegionMapEditor::on_tabWidget_Region_Map_currentChanged(int index) {
|
||||||
switch (index)
|
switch (index)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
this->ui->pushButton_Zoom_In_Image_Tiles->setVisible(true);
|
this->ui->verticalSlider_Zoom_Image_Tiles->setVisible(true);
|
||||||
this->ui->pushButton_Zoom_Out_Image_Tiles->setVisible(true);
|
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
this->ui->pushButton_Zoom_In_Image_Tiles->setVisible(false);
|
this->ui->verticalSlider_Zoom_Image_Tiles->setVisible(false);
|
||||||
this->ui->pushButton_Zoom_Out_Image_Tiles->setVisible(false);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -364,34 +407,30 @@ void RegionMapEditor::on_spinBox_RM_Options_x_valueChanged(int x) {
|
||||||
int y = this->ui->spinBox_RM_Options_y->value();
|
int y = this->ui->spinBox_RM_Options_y->value();
|
||||||
int red = this->region_map->getMapSquareIndex(x + this->region_map->padLeft, y + this->region_map->padTop);
|
int red = this->region_map->getMapSquareIndex(x + this->region_map->padLeft, y + this->region_map->padTop);
|
||||||
this->region_map_layout_item->highlight(x, y, red);
|
this->region_map_layout_item->highlight(x, y, red);
|
||||||
|
this->hasUnsavedChanges = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::on_spinBox_RM_Options_y_valueChanged(int y) {
|
void RegionMapEditor::on_spinBox_RM_Options_y_valueChanged(int y) {
|
||||||
int x = this->ui->spinBox_RM_Options_x->value();
|
int x = this->ui->spinBox_RM_Options_x->value();
|
||||||
int red = this->region_map->getMapSquareIndex(x + this->region_map->padLeft, y + this->region_map->padTop);
|
int red = this->region_map->getMapSquareIndex(x + this->region_map->padLeft, y + this->region_map->padTop);
|
||||||
this->region_map_layout_item->highlight(x, y, red);
|
this->region_map_layout_item->highlight(x, y, red);
|
||||||
|
this->hasUnsavedChanges = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::on_pushButton_RM_Options_save_clicked() {
|
void RegionMapEditor::on_comboBox_RM_ConnectedMap_activated(const QString &mapsec) {
|
||||||
this->region_map->saveOptions(
|
this->ui->lineEdit_RM_MapName->setText(this->project->mapSecToMapHoverName->value(mapsec));
|
||||||
this->region_map_layout_item->selectedTile,
|
//this->hasUnsavedChanges = true;// sometimes this is called for unknown reasons
|
||||||
this->ui->comboBox_RM_ConnectedMap->currentText(),
|
|
||||||
this->ui->lineEdit_RM_MapName->text(),
|
|
||||||
this->ui->spinBox_RM_Options_x->value(),
|
|
||||||
this->ui->spinBox_RM_Options_y->value()
|
|
||||||
);
|
|
||||||
this->region_map_layout_item->highlightedTile = -1;
|
|
||||||
this->region_map_layout_item->draw();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::on_pushButton_CityMap_save_clicked() {
|
void RegionMapEditor::on_lineEdit_RM_MapName_textEdited(const QString &text) {
|
||||||
this->city_map_item->save();
|
this->hasUnsavedChanges = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::on_pushButton_RM_Options_delete_clicked() {
|
void RegionMapEditor::on_pushButton_RM_Options_delete_clicked() {
|
||||||
this->region_map->resetSquare(this->region_map_layout_item->selectedTile);
|
this->region_map->resetSquare(this->region_map_layout_item->selectedTile);
|
||||||
this->region_map_layout_item->draw();
|
this->region_map_layout_item->draw();
|
||||||
this->region_map_layout_item->select(this->region_map_layout_item->selectedTile);
|
this->region_map_layout_item->select(this->region_map_layout_item->selectedTile);
|
||||||
|
this->hasUnsavedChanges = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::on_pushButton_CityMap_add_clicked() {
|
void RegionMapEditor::on_pushButton_CityMap_add_clicked() {
|
||||||
|
@ -419,6 +458,8 @@ void RegionMapEditor::on_pushButton_CityMap_add_clicked() {
|
||||||
if (popup.exec() == QDialog::Accepted) {
|
if (popup.exec() == QDialog::Accepted) {
|
||||||
createCityMap(name);
|
createCityMap(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this->hasUnsavedChanges = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::on_action_RegionMap_Resize_triggered() {
|
void RegionMapEditor::on_action_RegionMap_Resize_triggered() {
|
||||||
|
@ -448,59 +489,75 @@ void RegionMapEditor::on_action_RegionMap_Resize_triggered() {
|
||||||
if (popup.exec() == QDialog::Accepted) {
|
if (popup.exec() == QDialog::Accepted) {
|
||||||
resize(widthSpinBox->value(), heightSpinBox->value());
|
resize(widthSpinBox->value(), heightSpinBox->value());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this->hasUnsavedChanges = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::on_action_RegionMap_Undo_triggered() {
|
void RegionMapEditor::on_action_RegionMap_Undo_triggered() {
|
||||||
undo();
|
undo();
|
||||||
|
this->hasUnsavedChanges = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: add resizing
|
||||||
void RegionMapEditor::undo() {
|
void RegionMapEditor::undo() {
|
||||||
RegionMapHistoryItem *commit = history.current();
|
RegionMapHistoryItem *commit = history.back();
|
||||||
if (!commit) return;
|
if (!commit) return;
|
||||||
|
|
||||||
uint8_t tile = static_cast<uint8_t>(commit->prev);
|
|
||||||
|
|
||||||
history.back();
|
|
||||||
|
|
||||||
switch (commit->which)
|
switch (commit->which)
|
||||||
{
|
{
|
||||||
case RegionMapEditorBox::BackgroundImage:
|
case RegionMapEditorBox::BackgroundImage:
|
||||||
history.back();// TODO: why do I need to do this?
|
this->region_map->setTiles(commit->tiles);
|
||||||
this->region_map->map_squares[commit->index].tile_img_id = tile;
|
|
||||||
this->region_map_item->draw();
|
this->region_map_item->draw();
|
||||||
break;
|
break;
|
||||||
case RegionMapEditorBox::CityMapImage:
|
case RegionMapEditorBox::CityMapImage:
|
||||||
this->city_map_item->data[commit->index] = tile;
|
if (commit->cityMap == this->city_map_item->file)
|
||||||
|
this->city_map_item->setTiles(commit->tiles);
|
||||||
this->city_map_item->draw();
|
this->city_map_item->draw();
|
||||||
break;
|
break;
|
||||||
|
case RegionMapEditorBox::BackroundResize:
|
||||||
|
this->region_map->resize(commit->mapWidth, commit->mapHeight);
|
||||||
|
displayRegionMap();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::on_action_RegionMap_Redo_triggered() {
|
void RegionMapEditor::on_action_RegionMap_Redo_triggered() {
|
||||||
redo();
|
redo();
|
||||||
|
this->hasUnsavedChanges = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::redo() {
|
void RegionMapEditor::redo() {
|
||||||
RegionMapHistoryItem *commit = history.next();
|
RegionMapHistoryItem *commit = history.next();
|
||||||
if (!commit) return;
|
if (!commit) return;
|
||||||
|
|
||||||
uint8_t tile = static_cast<uint8_t>(commit->tile);
|
|
||||||
|
|
||||||
switch (commit->which)
|
switch (commit->which)
|
||||||
{
|
{
|
||||||
case RegionMapEditorBox::BackgroundImage:
|
case RegionMapEditorBox::BackgroundImage:
|
||||||
history.next();// TODO: why do I need to do this?
|
this->region_map->setTiles(commit->tiles);
|
||||||
this->region_map->map_squares[commit->index].tile_img_id = tile;
|
|
||||||
this->region_map_item->draw();
|
this->region_map_item->draw();
|
||||||
break;
|
break;
|
||||||
case RegionMapEditorBox::CityMapImage:
|
case RegionMapEditorBox::CityMapImage:
|
||||||
this->city_map_item->data[commit->index] = tile;
|
this->city_map_item->setTiles(commit->tiles);
|
||||||
this->city_map_item->draw();
|
this->city_map_item->draw();
|
||||||
break;
|
break;
|
||||||
|
case RegionMapEditorBox::BackroundResize:
|
||||||
|
this->region_map->resize(commit->mapWidth, commit->mapHeight);
|
||||||
|
displayRegionMap();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::resize(int w, int h) {
|
void RegionMapEditor::resize(int w, int h) {
|
||||||
|
RegionMapHistoryItem *commitOld = new RegionMapHistoryItem(
|
||||||
|
RegionMapEditorBox::BackroundResize, this->region_map->getTiles(), this->region_map->width(), this->region_map->height()
|
||||||
|
);
|
||||||
|
RegionMapHistoryItem *commitNew = new RegionMapHistoryItem(
|
||||||
|
RegionMapEditorBox::BackroundResize, this->region_map->getTiles(), w, h
|
||||||
|
);
|
||||||
|
history.push(commitOld);
|
||||||
|
history.push(commitNew);
|
||||||
|
history.back();
|
||||||
|
|
||||||
this->region_map->resize(w, h);
|
this->region_map->resize(w, h);
|
||||||
this->currIndex = 2 * w + 1;
|
this->currIndex = 2 * w + 1;
|
||||||
displayRegionMap();
|
displayRegionMap();
|
||||||
|
@ -510,74 +567,93 @@ void RegionMapEditor::on_comboBox_CityMap_picker_currentTextChanged(const QStrin
|
||||||
this->displayCityMap(file);
|
this->displayCityMap(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::on_pushButton_Zoom_In_Image_Tiles_clicked() {
|
void RegionMapEditor::closeEvent(QCloseEvent *event)
|
||||||
if (scaleRegionMapTiles >= 8.0) return;
|
{
|
||||||
scaleRegionMapTiles *= 2.0;
|
if (this->hasUnsavedChanges) {
|
||||||
this->ui->graphicsView_RegionMap_Tiles->setFixedSize(this->mapsquare_selector_item->pixelWidth * scaleRegionMapTiles + 2,
|
QMessageBox::StandardButton result = QMessageBox::question(
|
||||||
this->mapsquare_selector_item->pixelHeight * scaleRegionMapTiles + 2);
|
this,
|
||||||
this->ui->graphicsView_RegionMap_Tiles->scale(2.0, 2.0);
|
"porymap",
|
||||||
|
"The region map has been modified, save changes?",
|
||||||
|
QMessageBox::No | QMessageBox::Yes | QMessageBox::Cancel,
|
||||||
|
QMessageBox::Yes);
|
||||||
|
|
||||||
|
if (result == QMessageBox::Yes) {
|
||||||
|
this->on_action_RegionMap_Save_triggered();
|
||||||
|
event->accept();
|
||||||
|
} else if (result == QMessageBox::No) {
|
||||||
|
event->accept();
|
||||||
|
} else if (result == QMessageBox::Cancel) {
|
||||||
|
event->ignore();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::on_pushButton_Zoom_Out_Image_Tiles_clicked() {
|
void RegionMapEditor::on_verticalSlider_Zoom_Map_Image_valueChanged(int val) {
|
||||||
if (scaleRegionMapTiles <= 1.0) return;
|
bool zoom_in = val > scaleRegionMapImage ? true : false;
|
||||||
scaleRegionMapTiles /= 2.0;
|
scaleRegionMapImage = val;
|
||||||
this->ui->graphicsView_RegionMap_Tiles->setFixedSize(this->mapsquare_selector_item->pixelWidth * scaleRegionMapTiles + 2,
|
|
||||||
this->mapsquare_selector_item->pixelHeight * scaleRegionMapTiles + 2);
|
this->ui->graphicsView_Region_Map_BkgImg->setFixedSize(this->region_map->imgSize().width() * pow(scaleUpFactor, scaleRegionMapImage - 1) + 2,
|
||||||
this->ui->graphicsView_RegionMap_Tiles->scale(0.5, 0.5);
|
this->region_map->imgSize().height() * pow(scaleUpFactor, scaleRegionMapImage - 1) + 2);
|
||||||
|
this->ui->graphicsView_Region_Map_Layout->setFixedSize(this->region_map->imgSize().width() * pow(scaleUpFactor, scaleRegionMapImage - 1) + 2,
|
||||||
|
this->region_map->imgSize().height() * pow(scaleUpFactor, scaleRegionMapImage - 1) + 2);
|
||||||
|
|
||||||
|
if (zoom_in) {
|
||||||
|
this->ui->graphicsView_Region_Map_BkgImg->scale(scaleUpFactor, scaleUpFactor);
|
||||||
|
this->ui->graphicsView_Region_Map_Layout->scale(scaleUpFactor, scaleUpFactor);
|
||||||
|
} else {
|
||||||
|
//
|
||||||
|
this->ui->graphicsView_Region_Map_BkgImg->scale(scaleDownFactor, scaleDownFactor);
|
||||||
|
this->ui->graphicsView_Region_Map_Layout->scale(scaleDownFactor, scaleDownFactor);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::on_pushButton_Zoom_In_City_Tiles_clicked() {
|
void RegionMapEditor::on_verticalSlider_Zoom_Image_Tiles_valueChanged(int val) {
|
||||||
if (scaleCityMapTiles >= 8.0) return;
|
bool zoom_in = val > scaleRegionMapTiles ? true : false;
|
||||||
scaleCityMapTiles *= 2.0;
|
scaleRegionMapTiles = val;
|
||||||
this->ui->graphicsView_City_Map_Tiles->setFixedSize(this->city_map_selector_item->pixelWidth * scaleCityMapTiles + 2,
|
|
||||||
this->city_map_selector_item->pixelHeight * scaleCityMapTiles + 2);
|
this->ui->graphicsView_RegionMap_Tiles->setFixedSize(this->mapsquare_selector_item->pixelWidth * pow(scaleUpFactor, scaleRegionMapTiles - 1) + 2,
|
||||||
this->ui->graphicsView_City_Map_Tiles->scale(2.0,2.0);
|
this->mapsquare_selector_item->pixelHeight * pow(scaleUpFactor, scaleRegionMapTiles - 1) + 2);
|
||||||
|
|
||||||
|
if (zoom_in) {
|
||||||
|
this->ui->graphicsView_RegionMap_Tiles->scale(scaleUpFactor, scaleUpFactor);
|
||||||
|
} else {
|
||||||
|
this->ui->graphicsView_RegionMap_Tiles->scale(scaleDownFactor, scaleDownFactor);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::on_pushButton_Zoom_Out_City_Tiles_clicked() {
|
void RegionMapEditor::on_verticalSlider_Zoom_City_Map_valueChanged(int val) {
|
||||||
if (scaleCityMapTiles <= 1.0) return;
|
bool zoom_in = val > scaleCityMapImage ? true : false;
|
||||||
scaleCityMapTiles /= 2.0;
|
scaleCityMapImage = val;
|
||||||
this->ui->graphicsView_City_Map_Tiles->setFixedSize(this->city_map_selector_item->pixelWidth * scaleCityMapTiles + 2,
|
|
||||||
this->city_map_selector_item->pixelHeight * scaleCityMapTiles + 2);
|
this->ui->graphicsView_City_Map->setFixedSize(8 * city_map_item->width() * pow(scaleUpFactor, scaleCityMapImage - 1) + 2,
|
||||||
this->ui->graphicsView_City_Map_Tiles->scale(0.5,0.5);
|
8 * city_map_item->height() * pow(scaleUpFactor, scaleCityMapImage - 1) + 2);
|
||||||
|
|
||||||
|
if (zoom_in) {
|
||||||
|
this->ui->graphicsView_City_Map->scale(scaleUpFactor, scaleUpFactor);
|
||||||
|
} else {
|
||||||
|
this->ui->graphicsView_City_Map->scale(scaleDownFactor, scaleDownFactor);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::on_pushButton_Zoom_In_City_Map_clicked() {
|
void RegionMapEditor::on_verticalSlider_Zoom_City_Tiles_valueChanged(int val) {
|
||||||
if (scaleCityMapImage >= 8.0) return;
|
bool zoom_in = val > scaleCityMapTiles ? true : false;
|
||||||
scaleCityMapImage *= 2.0;
|
scaleCityMapTiles = val;
|
||||||
this->ui->graphicsView_City_Map->setFixedSize(8 * city_map_item->width() * scaleCityMapImage + 2,
|
|
||||||
8 * city_map_item->height() * scaleCityMapImage + 2);
|
|
||||||
this->ui->graphicsView_City_Map->scale(2.0,2.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void RegionMapEditor::on_pushButton_Zoom_Out_City_Map_clicked() {
|
this->ui->graphicsView_City_Map_Tiles->setFixedSize(this->city_map_selector_item->pixelWidth * pow(scaleUpFactor, scaleCityMapTiles - 1) + 2,
|
||||||
if (scaleCityMapImage <= 1.0) return;
|
this->city_map_selector_item->pixelHeight * pow(scaleUpFactor, scaleCityMapTiles - 1) + 2);
|
||||||
scaleCityMapImage /= 2.0;
|
|
||||||
this->ui->graphicsView_City_Map->setFixedSize(8 * city_map_item->width() * scaleCityMapImage + 2,
|
|
||||||
8 * city_map_item->height() * scaleCityMapImage + 2);
|
|
||||||
this->ui->graphicsView_City_Map->scale(0.5,0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
void RegionMapEditor::on_pushButton_Zoom_In_Map_Image_clicked() {
|
if (zoom_in) {
|
||||||
if (scaleRegionMapImage >= 8.0) return;
|
this->ui->graphicsView_City_Map_Tiles->scale(scaleUpFactor, scaleUpFactor);
|
||||||
scaleRegionMapImage *= 2.0;
|
} else {
|
||||||
this->ui->graphicsView_Region_Map_BkgImg->setFixedSize(this->region_map->imgSize() * scaleRegionMapImage);
|
this->ui->graphicsView_City_Map_Tiles->scale(scaleDownFactor, scaleDownFactor);
|
||||||
this->ui->graphicsView_Region_Map_Layout->setFixedSize(this->region_map->imgSize() * scaleRegionMapImage);
|
}
|
||||||
this->ui->graphicsView_Region_Map_BkgImg->scale(2.0,2.0);
|
|
||||||
this->ui->graphicsView_Region_Map_Layout->scale(2.0,2.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void RegionMapEditor::on_pushButton_Zoom_Out_Map_Image_clicked() {
|
|
||||||
if (scaleRegionMapImage <= 1.0) return;
|
|
||||||
scaleRegionMapImage /= 2.0;
|
|
||||||
this->ui->graphicsView_Region_Map_BkgImg->setFixedSize(this->region_map->imgSize() * scaleRegionMapImage);
|
|
||||||
this->ui->graphicsView_Region_Map_Layout->setFixedSize(this->region_map->imgSize() * scaleRegionMapImage);
|
|
||||||
this->ui->graphicsView_Region_Map_BkgImg->scale(0.5,0.5);
|
|
||||||
this->ui->graphicsView_Region_Map_Layout->scale(0.5,0.5);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapEditor::on_action_RegionMap_Generate_triggered() {
|
void RegionMapEditor::on_action_RegionMap_Generate_triggered() {
|
||||||
//
|
//
|
||||||
RegionMapGenerator generator(this->project);
|
RegionMapGenerator generator(this->project);
|
||||||
generator.generate("LittlerootTown");
|
generator.generate("LittlerootTown");
|
||||||
|
this->hasUnsavedChanges = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,10 +73,7 @@ void RegionMapLayoutPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapLayoutPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
|
void RegionMapLayoutPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
|
||||||
SelectablePixmapItem::mouseMoveEvent(event);
|
mousePressEvent(event);
|
||||||
this->updateSelectedTile();
|
|
||||||
emit hoveredTileChanged(this->selectedTile);
|
|
||||||
emit selectedTileChanged(this->selectedTile);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapLayoutPixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
|
void RegionMapLayoutPixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
|
||||||
|
|
|
@ -60,10 +60,14 @@ void RegionMapPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
|
void RegionMapPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
|
||||||
int x = static_cast<int>(event->pos().x()) / 8;
|
QPointF pos = event->pos();
|
||||||
int y = static_cast<int>(event->pos().y()) / 8;
|
int x = static_cast<int>(pos.x()) / 8;
|
||||||
emit this->hoveredRegionMapTileChanged(x, y);
|
int y = static_cast<int>(pos.y()) / 8;
|
||||||
emit mouseEvent(event, this);
|
if (x < this->region_map->width() && x >= 0
|
||||||
|
&& y < this->region_map->height() && y >= 0) {
|
||||||
|
emit this->hoveredRegionMapTileChanged(x, y);
|
||||||
|
emit mouseEvent(event, this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionMapPixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
|
void RegionMapPixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
|
||||||
|
|
Loading…
Reference in a new issue