blob: ea71e591b293bbaab5b089006d50792b3ec29bb8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFileDialog>
#include <QSettings>
#include <QDebug>
#include <QPixmap>
#include <QShortcut>
#include "mygraphicsscene.h"
#include "ui_mainwindow.h"
#define APP_NAME QString("Airport Map Editor")
#define APP_VERSION_STRING QString("0.3")
#define APP_FULL_NAME APP_NAME + " " + APP_VERSION_STRING
#define TILE_SIZE (64)
#define DATA_HEADER_SIZE (0x3F)
#define TILE_MIRROR_FLAG (0x80)
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
void closeEvent(QCloseEvent*);
private:
struct IsometricPos
{
short x;
short y;
short z;
};
struct CartesianPos
{
short x;
short y;
};
bool checkFile(QFile &f, QFile::OpenModeFlag flags = QFile::ReadOnly);
void appSettings(void);
void loadTilesetData(void);
void loadBuildingData(void);
void parseMapData(QDataStream &ds);
void addTile(quint8 CurrentTile, const int i, const int j);
void addBuilding(quint8 CurrentBuilding, const int i, const int j);
CartesianPos isometricToCartesian(const IsometricPos& ptrIsoPos) const
{
CartesianPos retCartPos;
retCartPos.x = ptrIsoPos.x - (ptrIsoPos.x >> 1);
retCartPos.x -= ptrIsoPos.y >> 1;
retCartPos.y = ptrIsoPos.y >> 2;
retCartPos.y += ptrIsoPos.x >> 2;
retCartPos.y -= ptrIsoPos.z;
return retCartPos;
}
Ui::MainWindow ui;
QString _last_dir;
MyGraphicsScene gscene;
int level_size;
QByteArray map_buffer;
int selected_item;
QHash<int, QString> tilesetData;
QHash<int, QString> buildingData;
QList<QGraphicsTextItem*> textItems;
QShortcut tileSet;
QShortcut tileMoveUp;
QString tilesetPaths[2];
QString buildingPath;
private slots:
void loadMap(void);
void onCreateMap(void);
void processMapFile(const QByteArray &);
void onMapItemClicked(QPointF position);
void onNoItemSelected(void);
void onListItemSelected(const Qt::MouseButton button);
void onSaveMap(void);
void onShowNumbers(int);
void onAirportNameModified(const QString);
void showError(const QString& error);
void moveUp(void);
};
#endif // MAINWINDOW_H
|