DIE Engine
Loading...
Searching...
No Matches
wdgmapeditor.h
Go to the documentation of this file.
1
11
12#ifndef WDG_MAPEDITOR_H
13#define WDG_MAPEDITOR_H
14
15#include "editor.h"
16#include "map.h"
17
18#include <QWidget>
19#include <QPen>
20#include <QBrush>
21#include <QVector2D>
22
23#include <functional>
24
25class WdgMapEditor : public QWidget
26{
27 Q_OBJECT
28
29public:
30 explicit WdgMapEditor(QWidget *parent = nullptr);
31
32 void setViewMode(VIEW_MODES mode);
33
34 void setCenter();
35 void setOffsetX(float x);
36 void setOffsetZ(float z);
37
38 float getOffsetX() {return -offset.x();}
39 float getOffsetZ() {return -offset.y();}
40
41 QVector2D getCursor() {return cursor;}
42
43private:
44 VIEW_MODES mode;
45
46 QVector2D offset;
47 QVector2D scroll;
48 QVector2D cursor;
49 QVector2D dragCursor;
50
51 bool selectRegion;
52 bool selectRegionStart;
53 QVector2D selectRegionC1;
54 QVector2D selectRegionC2;
55 bool mouseLeftWasPressed;
56
57 static QBrush gridMajor;
58 static QBrush gridMinor;
59 static QBrush gridScissor;
60
61 static QPen colorPrincipal;
62 static QPen colorSelected;
63 static QPen colorGreyed;
64
65 static QPen colorNodeBase;
66 static QPen colorWallBase;
67 static QPen colorWallNormals;
68 static QPen colorSubmapBase;
69 static QPen colorDoorBase;
70 static QPen colorLiftBase;
71 static QPen colorStaircaseBase;
72 static QPen colorLightBase;
73 static QPen colorSpriteBase;
74 static QPen colorSpeakerBase;
75
76 static QPen colorGlowMap;
77
78 static QBrush brushWallAnchor;
79
80 static QImage pictoSubmap;
81 static QImage pictoDoor;
82 static QImage pictoLift;
83 static QImage pictoStaircase;
84 static QImage pictoLight;
85 static QImage pictoSprite;
86 static QImage pictoSpeaker;
87
88protected:
89 void paintEvent(QPaintEvent * event) override;
90
91 void mouseMoveEvent(QMouseEvent *event) override;
92 void mousePressEvent(QMouseEvent *event) override;
93 void mouseReleaseEvent(QMouseEvent *event) override;
94
95 void wheelEvent(QWheelEvent *event) override;
96
97private:
98 void drawViewLabel(QPainter & painter);
99 void drawGrid(QPainter & painter, QVector2D & org);
100 void drawGlowMap(QPainter & painter, QVector2D & org);
101
102 void drawArrow(QPainter & painter, QVector2D & org, QVector2D &pos, float pan, float length);
103 void drawMap(QPainter & painter, Map & map);
104 void drawNodes(QPainter & painter, Map & map, QVector2D & org);
105 void drawWallsTop(QPainter & painter, Map & map, QVector2D & org);
106 void drawWallsSide(QPainter & painter, Map & map, QVector2D & org);
107
108 void drawSubmaps(QPainter & painter, Map & map, QVector2D & org);
109 void drawDoors(QPainter & painter, Map & map, QVector2D & org);
110 void drawLifts(QPainter & painter, Map & map, QVector2D & org);
111 void drawStaircases(QPainter & painter, Map & map, QVector2D & org);
112 void drawLights(QPainter & painter, Map & map, QVector2D & org);
113 void drawSprites(QPainter & painter, Map & map, QVector2D & org);
114 void drawSpeakers(QPainter & painter, Map & map, QVector2D & org);
115
116 QVector2D getWorldCoordinates(const QVector2D & pos);
117 void mousePressScroll(QMouseEvent *event);
118 void mousePressSelect(QMouseEvent *event);
119 void mouseReleaseCreate(QMouseEvent *event);
120 void mouseReleaseSelect(QMouseEvent *event);
121
122 void mouseMoveScroll(QMouseEvent *event);
123 void mouseMoveDrag(QMouseEvent *event);
124
125 template <typename T, typename Container>
126 void drawItems(QPainter& painter,
127 Map& map,
128 QVector2D& org,
129 const Container& items,
130 int selectedIndex,
131 const QPen& pen,
132 const QImage& icon,
133 std::function<int(const T&)> getNodeId);
134
136 template <typename T, typename Container>
137 bool dragNodeItems(Container & items,
138 int selectedIndex,
139 std::function<int(const T&)> getNodeId);
140};
141
142#endif // WDG_MAPEDITOR_H
Definition map.h:50
void mousePressEvent(QMouseEvent *event) override
Definition wdgmapeditor.cpp:832
float getOffsetX()
Definition wdgmapeditor.h:38
void mouseMoveEvent(QMouseEvent *event) override
Definition wdgmapeditor.cpp:859
void setCenter()
Definition wdgmapeditor.cpp:83
QVector2D getCursor()
Definition wdgmapeditor.h:41
WdgMapEditor(QWidget *parent=nullptr)
Definition wdgmapeditor.cpp:56
float getOffsetZ()
Definition wdgmapeditor.h:39
void setViewMode(VIEW_MODES mode)
Definition wdgmapeditor.cpp:77
void paintEvent(QPaintEvent *event) override
Definition wdgmapeditor.cpp:397
void setOffsetZ(float z)
Definition wdgmapeditor.cpp:97
void mouseReleaseEvent(QMouseEvent *event) override
Definition wdgmapeditor.cpp:847
void setOffsetX(float x)
Definition wdgmapeditor.cpp:89
void wheelEvent(QWheelEvent *event) override
Definition wdgmapeditor.cpp:869
VIEW_MODES
Definition editor.h:42