livelcreator added
This commit is contained in:
		
							parent
							
								
									6e23ac1eeb
								
							
						
					
					
						commit
						6191258856
					
				
							
								
								
									
										22
									
								
								Black_okospace_levelcreator/Black_okospace_levelcreator.pro
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								Black_okospace_levelcreator/Black_okospace_levelcreator.pro
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | |||||||
|  | #------------------------------------------------- | ||||||
|  | # | ||||||
|  | # Project created by QtCreator 2013-11-04T12:10:54 | ||||||
|  | # | ||||||
|  | #------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | QT       += core gui | ||||||
|  | 
 | ||||||
|  | TARGET = Black_okospace_levelcreator | ||||||
|  | TEMPLATE = app | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | SOURCES += main.cpp\ | ||||||
|  |         mainwindow.cpp \ | ||||||
|  |     leveldata.cpp \ | ||||||
|  |     customlabel.cpp | ||||||
|  | 
 | ||||||
|  | HEADERS  += mainwindow.h \ | ||||||
|  |     leveldata.h \ | ||||||
|  |     customlabel.h | ||||||
|  | 
 | ||||||
|  | FORMS    += mainwindow.ui | ||||||
							
								
								
									
										32
									
								
								Black_okospace_levelcreator/customlabel.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								Black_okospace_levelcreator/customlabel.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | |||||||
|  | #include "customlabel.h" | ||||||
|  | 
 | ||||||
|  | CustomLabel::CustomLabel(QWidget *parent) : | ||||||
|  |     QLabel(parent) | ||||||
|  | { | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void CustomLabel::mousePressEvent(QMouseEvent *ev) | ||||||
|  | { | ||||||
|  |     emit buttonPressed(ev->x(), ev->y()); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void CustomLabel::mouseReleaseEvent(QMouseEvent * ev) | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  |         if (ev->button() == Qt::LeftButton) | ||||||
|  |         { | ||||||
|  |             emit leftButtonReleased(ev->x(), ev->y()); | ||||||
|  |         } | ||||||
|  |         if (ev->button() == Qt::RightButton) | ||||||
|  |         { | ||||||
|  |             emit rightButtonReleased(ev->x(), ev->y()); | ||||||
|  |         } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void CustomLabel::mouseMoveEvent(QMouseEvent *ev) | ||||||
|  | { | ||||||
|  |     if (ev->buttons() & Qt::RightButton) | ||||||
|  |     { | ||||||
|  |         emit mouseMoveWithRightButtonPressed(ev->x(), ev->y()); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										30
									
								
								Black_okospace_levelcreator/customlabel.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								Black_okospace_levelcreator/customlabel.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | |||||||
|  | #ifndef CUSTOMLABEL_H | ||||||
|  | #define CUSTOMLABEL_H | ||||||
|  | 
 | ||||||
|  | #include <QLabel> | ||||||
|  | #include <QMouseEvent> | ||||||
|  | 
 | ||||||
|  | class CustomLabel : public QLabel | ||||||
|  | { | ||||||
|  |     Q_OBJECT | ||||||
|  | public: | ||||||
|  |     explicit CustomLabel(QWidget *parent = 0); | ||||||
|  |      | ||||||
|  | signals: | ||||||
|  |     void buttonPressed(int x, int y); | ||||||
|  | 
 | ||||||
|  |     void leftButtonReleased(int x, int y); | ||||||
|  |     void rightButtonReleased(int x, int y); | ||||||
|  |     void mouseMoveWithRightButtonPressed(int x, int y); | ||||||
|  | 
 | ||||||
|  |      | ||||||
|  | public slots: | ||||||
|  | 
 | ||||||
|  | protected: | ||||||
|  |     virtual void mousePressEvent(QMouseEvent *ev); | ||||||
|  |     virtual void mouseReleaseEvent(QMouseEvent * ev); | ||||||
|  |     virtual void mouseMoveEvent(QMouseEvent *ev); | ||||||
|  |      | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #endif // CUSTOMLABEL_H
 | ||||||
							
								
								
									
										173
									
								
								Black_okospace_levelcreator/leveldata.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										173
									
								
								Black_okospace_levelcreator/leveldata.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,173 @@ | |||||||
|  | #include "leveldata.h" | ||||||
|  | 
 | ||||||
|  | #include "mainwindow.h" | ||||||
|  | 
 | ||||||
|  |  #include <QPainter> | ||||||
|  | 
 | ||||||
|  | const int CONST_SELECTION_DISTANCE = 10; | ||||||
|  | 
 | ||||||
|  | LevelData::LevelData(QObject *parent) | ||||||
|  |     : QObject(parent) | ||||||
|  | { | ||||||
|  |     ResetSelected(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | LevelData::~LevelData() | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void LevelData::OnSelectPoint(int x, int y) | ||||||
|  | { | ||||||
|  |     selectedPoly = -1; | ||||||
|  |     selectedPoint = -1; | ||||||
|  | 
 | ||||||
|  |     for (int i = 0; i < PolyArr.size(); i++) | ||||||
|  |     { | ||||||
|  |         for (int j=0; j < PolyArr[i].pointArr.size(); j++) | ||||||
|  |         { | ||||||
|  |             if (abs(PolyArr[i].pointArr[j].x() - x) < CONST_SELECTION_DISTANCE && abs(PolyArr[i].pointArr[j].y() - y) < CONST_SELECTION_DISTANCE) | ||||||
|  |             { | ||||||
|  |                 selectedPoly = i; | ||||||
|  |                 selectedPoint = j; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     RefreshPixmap(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void LevelData::OnMovePoint(int x, int y) | ||||||
|  | { | ||||||
|  |     QPoint shift = QPoint(x, y) - LastMouseDownPos; | ||||||
|  |     //QPoint shift = QPoint(x, y);
 | ||||||
|  | 
 | ||||||
|  |     if (selectedPoly != -1 && selectedPoint != -1) | ||||||
|  |     { | ||||||
|  |         PolyArr[selectedPoly].pointArr[selectedPoint] += shift; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     LastMouseDownPos = QPoint(x, y); | ||||||
|  | 
 | ||||||
|  |     RefreshPixmap(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void LevelData::OnAddPoint(int x, int y) | ||||||
|  | { | ||||||
|  |     tempPointArr.push_back(QPoint(x,y)); | ||||||
|  |     RefreshPixmap(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void LevelData::RefreshPixmap() | ||||||
|  | { | ||||||
|  |     mainWindow->Pixmap->convertFromImage(mainWindow->bkgImage); | ||||||
|  | 
 | ||||||
|  |     QPainter pixPaint(mainWindow->Pixmap); | ||||||
|  | 
 | ||||||
|  |     for (size_t i = 0; i < tempPointArr.size(); i++) | ||||||
|  |     { | ||||||
|  |         QBrush brush(Qt::red); | ||||||
|  |         QPen pen(Qt::red); | ||||||
|  |         pixPaint.setBrush(brush); | ||||||
|  |         pixPaint.setPen(pen); | ||||||
|  |         pixPaint.drawEllipse(tempPointArr[i], 3, 3); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     for (size_t i = 0; i < PolyArr.size(); i++) | ||||||
|  |     { | ||||||
|  |         QBrush brush(QColor::fromRgb(255, 0, 255)); | ||||||
|  |         QPen pen(QColor::fromRgb(255, 0, 255)); | ||||||
|  |         pixPaint.setBrush(brush); | ||||||
|  |         pixPaint.setPen(pen); | ||||||
|  | 
 | ||||||
|  |         QPoint point1; | ||||||
|  |         QPoint point2; | ||||||
|  | 
 | ||||||
|  |         for (size_t j=0; j< PolyArr[i].pointArr.size()-1; j++) | ||||||
|  |         { | ||||||
|  |             point1 = PolyArr[i].pointArr[j]; | ||||||
|  |             point2 = PolyArr[i].pointArr[j+1]; | ||||||
|  |             pixPaint.drawLine(point1, point2); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         point1 = PolyArr[i].pointArr[PolyArr[i].pointArr.size()-1]; | ||||||
|  |         point2 = PolyArr[i].pointArr[0]; | ||||||
|  |         pixPaint.drawLine(point1, point2); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (selectedPoly != -1 && selectedPoint != -1) | ||||||
|  |     { | ||||||
|  |         QBrush brush(QColor::fromRgb(255, 0, 255)); | ||||||
|  |         QPen pen(QColor::fromRgb(255, 0, 255)); | ||||||
|  |         pixPaint.setBrush(brush); | ||||||
|  |         pixPaint.setPen(pen); | ||||||
|  | 
 | ||||||
|  |         pixPaint.drawEllipse(PolyArr[selectedPoly].pointArr[selectedPoint], 3, 3); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     mainWindow->SetImagePixmap(mainWindow->Pixmap); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void LevelData::OnApplyPointList(int x, int y) | ||||||
|  | { | ||||||
|  |     if (tempPointArr.size() >= 3) | ||||||
|  |     { | ||||||
|  |         TPoly poly; | ||||||
|  |         poly.pointArr = tempPointArr; | ||||||
|  |         PolyArr.push_back(poly); | ||||||
|  |         tempPointArr.clear(); | ||||||
|  |     } | ||||||
|  |     RefreshPixmap(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void LevelData::ResetSelected() | ||||||
|  | { | ||||||
|  |     selectedPoly = -1; | ||||||
|  |     selectedPoint = -1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void LevelData::ResetTempPoints() | ||||||
|  | { | ||||||
|  |     tempPointArr.clear(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void LevelData::Clear() | ||||||
|  | { | ||||||
|  |     tempPointArr.clear(); | ||||||
|  |     PolyArr.clear(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void LevelData::OnMouseDown(int x, int y) | ||||||
|  | { | ||||||
|  |     LastMouseDownPos = QPoint(x, y); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void LevelData::DeleteSelectedPoint() | ||||||
|  | { | ||||||
|  |     if (selectedPoly != -1 && selectedPoint != -1) | ||||||
|  |     { | ||||||
|  | 
 | ||||||
|  |        PolyArr[selectedPoly].pointArr.erase(PolyArr[selectedPoly].pointArr.begin() + selectedPoint); | ||||||
|  | 
 | ||||||
|  |        if (PolyArr[selectedPoly].pointArr.size() < 3) | ||||||
|  |        { | ||||||
|  |            PolyArr.erase(PolyArr.begin() + selectedPoly); | ||||||
|  |        } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     ResetSelected(); | ||||||
|  |     RefreshPixmap(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void LevelData::DeleteLastTempPoint() | ||||||
|  | { | ||||||
|  |     if (tempPointArr.size() > 0) | ||||||
|  |     { | ||||||
|  |         tempPointArr.erase(tempPointArr.end()-1); | ||||||
|  |     } | ||||||
|  |     RefreshPixmap(); | ||||||
|  | } | ||||||
							
								
								
									
										52
									
								
								Black_okospace_levelcreator/leveldata.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								Black_okospace_levelcreator/leveldata.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,52 @@ | |||||||
|  | #ifndef LEVELDATA_H | ||||||
|  | #define LEVELDATA_H | ||||||
|  | 
 | ||||||
|  | #include <vector> | ||||||
|  | #include <QObject> | ||||||
|  | #include <QPoint> | ||||||
|  | 
 | ||||||
|  | class MainWindow; | ||||||
|  | 
 | ||||||
|  | struct TPoly | ||||||
|  | { | ||||||
|  |     std::vector<QPoint> pointArr; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | class LevelData : public QObject | ||||||
|  | { | ||||||
|  |     Q_OBJECT | ||||||
|  | public: | ||||||
|  |     std::vector<QPoint> tempPointArr; | ||||||
|  |     std::vector<TPoly> PolyArr; | ||||||
|  | 
 | ||||||
|  |     int selectedPoly; | ||||||
|  |     int selectedPoint; | ||||||
|  |     QPoint LastMouseDownPos; | ||||||
|  | 
 | ||||||
|  |     MainWindow* mainWindow; | ||||||
|  | 
 | ||||||
|  |     explicit LevelData(QObject *parent = 0); | ||||||
|  | 
 | ||||||
|  |     ~LevelData(); | ||||||
|  | 
 | ||||||
|  |     void RefreshPixmap(); | ||||||
|  |     void ResetSelected(); | ||||||
|  |     void ResetTempPoints(); | ||||||
|  | 
 | ||||||
|  |     void Clear(); | ||||||
|  | 
 | ||||||
|  | public slots: | ||||||
|  |     void OnSelectPoint(int x, int y); | ||||||
|  |     void OnMovePoint(int x, int y); | ||||||
|  | 
 | ||||||
|  |     void OnAddPoint(int x, int y); | ||||||
|  |     void OnApplyPointList(int x, int y); | ||||||
|  | 
 | ||||||
|  |     void OnMouseDown(int x, int y); | ||||||
|  | 
 | ||||||
|  |     void DeleteLastTempPoint(); | ||||||
|  |     void DeleteSelectedPoint(); | ||||||
|  | 
 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #endif // LEVELDATA_H
 | ||||||
							
								
								
									
										13
									
								
								Black_okospace_levelcreator/main.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								Black_okospace_levelcreator/main.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | |||||||
|  | #include <QtGui/QApplication> | ||||||
|  | #include "mainwindow.h" | ||||||
|  | 
 | ||||||
|  | int main(int argc, char *argv[]) | ||||||
|  | { | ||||||
|  |     QApplication a(argc, argv); | ||||||
|  |     MainWindow w; | ||||||
|  |     w.show(); | ||||||
|  | 
 | ||||||
|  |     w.InitSlots(); | ||||||
|  | 
 | ||||||
|  |     return a.exec(); | ||||||
|  | } | ||||||
							
								
								
									
										166
									
								
								Black_okospace_levelcreator/mainwindow.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										166
									
								
								Black_okospace_levelcreator/mainwindow.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,166 @@ | |||||||
|  | #include "mainwindow.h" | ||||||
|  | #include "ui_mainwindow.h" | ||||||
|  | #include <QtGui> | ||||||
|  | 
 | ||||||
|  | MainWindow::MainWindow(QWidget *parent) : | ||||||
|  |     QMainWindow(parent), | ||||||
|  |     ui(new Ui::MainWindow) | ||||||
|  | { | ||||||
|  |     ui->setupUi(this); | ||||||
|  | 
 | ||||||
|  |     Pixmap = new QPixmap(960, 640); | ||||||
|  |     levelData = new LevelData; | ||||||
|  |     levelData->mainWindow = this; | ||||||
|  | 
 | ||||||
|  |     CurrentMode = CM_ADD_POLYS; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | MainWindow::~MainWindow() | ||||||
|  | { | ||||||
|  |     delete Pixmap; | ||||||
|  |     delete levelData; | ||||||
|  |     delete ui; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainWindow::InitSlots() | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  |     QObject::connect(ui->LoadBackgroundButton, SIGNAL(pressed()), this, SLOT(LoadBackgroundSlot())); | ||||||
|  |     QObject::connect(ui->radioButtonAddPolys, SIGNAL(pressed()), this, SLOT(RadioButtonAddPolysSelected())); | ||||||
|  |     QObject::connect(ui->radioButtonModifyPolys, SIGNAL(pressed()), this, SLOT(RadioButtonModifyPolysSelected())); | ||||||
|  |     QObject::connect(ui->Image, SIGNAL(buttonPressed(int, int)), levelData, SLOT(OnMouseDown(int, int))); | ||||||
|  | 
 | ||||||
|  |     QObject::connect(ui->SaveLevelButton, SIGNAL(pressed()), this, SLOT(OnSaveButtonPressed())); | ||||||
|  |     QObject::connect(ui->LoadLevelButton, SIGNAL(pressed()), this, SLOT(OnLoadButtonPressed())); | ||||||
|  | 
 | ||||||
|  |     InitSlotsForAddPolys(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainWindow::InitSlotsForAddPolys() | ||||||
|  | { | ||||||
|  |     QObject::disconnect(ui->Image, SIGNAL(leftButtonReleased(int, int)), levelData, SLOT(OnSelectPoint(int, int))); | ||||||
|  |     QObject::disconnect(ui->Image, SIGNAL(mouseMoveWithRightButtonPressed(int, int)), levelData, SLOT(OnMovePoint(int, int))); | ||||||
|  |     QObject::disconnect(this, SIGNAL(deleteButtonPressed()), levelData, SLOT(DeleteSelectedPoint())); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     QObject::connect(ui->Image, SIGNAL(leftButtonReleased(int, int)), levelData, SLOT(OnAddPoint(int, int))); | ||||||
|  |     QObject::connect(ui->Image, SIGNAL(rightButtonReleased(int, int)), levelData, SLOT(OnApplyPointList(int, int))); | ||||||
|  |     QObject::connect(this, SIGNAL(deleteButtonPressed()), levelData, SLOT(DeleteLastTempPoint())); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainWindow::InitSlotsForModifyPolys() | ||||||
|  | { | ||||||
|  |     QObject::disconnect(ui->Image, SIGNAL(leftButtonReleased(int, int)), levelData, SLOT(OnAddPoint(int, int))); | ||||||
|  |     QObject::disconnect(ui->Image, SIGNAL(rightButtonReleased(int, int)), levelData, SLOT(OnApplyPointList(int, int))); | ||||||
|  |     QObject::disconnect(this, SIGNAL(deleteButtonPressed()), levelData, SLOT(DeleteLastTempPoint())); | ||||||
|  | 
 | ||||||
|  |     QObject::connect(ui->Image, SIGNAL(leftButtonReleased(int, int)), levelData, SLOT(OnSelectPoint(int, int))); | ||||||
|  |     QObject::connect(ui->Image, SIGNAL(mouseMoveWithRightButtonPressed(int, int)), levelData, SLOT(OnMovePoint(int, int))); | ||||||
|  |     QObject::connect(this, SIGNAL(deleteButtonPressed()), levelData, SLOT(DeleteSelectedPoint())); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainWindow::LoadBackgroundSlot() | ||||||
|  | { | ||||||
|  |     QFileDialog dialog(this); | ||||||
|  | 
 | ||||||
|  |     dialog.setNameFilter(tr("PNG (*.png)")); | ||||||
|  | 
 | ||||||
|  |     dialog.setFileMode(QFileDialog::ExistingFile); | ||||||
|  | 
 | ||||||
|  |     if (dialog.exec()) | ||||||
|  |     { | ||||||
|  |         QString filename = (dialog.selectedFiles())[0]; | ||||||
|  |         bkgImage = QImage(filename); | ||||||
|  | 
 | ||||||
|  |         levelData->RefreshPixmap(); | ||||||
|  |         //ui->Image->setPixmap(*Pixmap);
 | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainWindow::RadioButtonAddPolysSelected() | ||||||
|  | { | ||||||
|  |     CurrentMode = CM_ADD_POLYS; | ||||||
|  |     InitSlotsForAddPolys(); | ||||||
|  |     levelData->ResetSelected(); | ||||||
|  |     levelData->RefreshPixmap(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainWindow::RadioButtonModifyPolysSelected() | ||||||
|  | { | ||||||
|  |     CurrentMode = CM_MODIFY_POLYS; | ||||||
|  |     InitSlotsForModifyPolys(); | ||||||
|  |     levelData->ResetTempPoints(); | ||||||
|  |     levelData->RefreshPixmap(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainWindow::OnSaveButtonPressed() | ||||||
|  | { | ||||||
|  |     QFileDialog dialog(this); | ||||||
|  | 
 | ||||||
|  |     dialog.setNameFilter(tr("xml (*.xml)")); | ||||||
|  | 
 | ||||||
|  |     dialog.setFileMode(QFileDialog::AnyFile); | ||||||
|  | 
 | ||||||
|  |     if (dialog.exec()) | ||||||
|  |     { | ||||||
|  |         QString filename = (dialog.selectedFiles())[0]; | ||||||
|  | 
 | ||||||
|  |         QString xmlOut; | ||||||
|  | 
 | ||||||
|  |         QXmlStreamWriter stream(&xmlOut); | ||||||
|  |         stream.setAutoFormatting(true); | ||||||
|  |         stream.writeStartDocument(); | ||||||
|  | 
 | ||||||
|  |         stream.writeStartElement("LevelPolyArr"); | ||||||
|  | 
 | ||||||
|  |         for (size_t i = 0; i < levelData->PolyArr.size(); i++) | ||||||
|  |         { | ||||||
|  |             stream.writeStartElement("LevelPoly"); | ||||||
|  | 
 | ||||||
|  |             for (size_t j = 0; j < levelData->PolyArr[i].pointArr.size(); j++) | ||||||
|  |             { | ||||||
|  |                 stream.writeStartElement("Point"); | ||||||
|  |                 stream.writeAttribute("x", QString::number(levelData->PolyArr[i].pointArr[j].x())); | ||||||
|  |                 stream.writeAttribute("y", QString::number(levelData->PolyArr[i].pointArr[j].y())); | ||||||
|  |                 stream.writeEndElement(); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             stream.writeEndElement(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         stream.writeEndElement(); | ||||||
|  | 
 | ||||||
|  |         stream.writeEndDocument(); | ||||||
|  | 
 | ||||||
|  |         QFile file(filename); | ||||||
|  |         if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) | ||||||
|  |             return; | ||||||
|  | 
 | ||||||
|  |         QTextStream out(&file); | ||||||
|  |         out << xmlOut; | ||||||
|  | 
 | ||||||
|  |         file.close(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainWindow::OnLoadButtonPressed() | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainWindow::SetImagePixmap(QPixmap* p) | ||||||
|  | { | ||||||
|  |     ui->Image->setPixmap(*p); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainWindow::keyReleaseEvent(QKeyEvent * qev) | ||||||
|  | { | ||||||
|  |     if (qev->key() == Qt::Key_Delete) | ||||||
|  |     { | ||||||
|  |         emit deleteButtonPressed(); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										56
									
								
								Black_okospace_levelcreator/mainwindow.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								Black_okospace_levelcreator/mainwindow.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,56 @@ | |||||||
|  | #ifndef MAINWINDOW_H | ||||||
|  | #define MAINWINDOW_H | ||||||
|  | 
 | ||||||
|  | #include <QMainWindow> | ||||||
|  | #include "leveldata.h" | ||||||
|  | 
 | ||||||
|  | namespace Ui { | ||||||
|  | class MainWindow; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | enum TCurrentMode | ||||||
|  | { | ||||||
|  |     CM_ADD_POLYS, | ||||||
|  |     CM_MODIFY_POLYS, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | class MainWindow : public QMainWindow | ||||||
|  | { | ||||||
|  |     Q_OBJECT | ||||||
|  |      | ||||||
|  | public: | ||||||
|  |     TCurrentMode CurrentMode; | ||||||
|  | 
 | ||||||
|  |     QPixmap* Pixmap; | ||||||
|  |     QImage bkgImage; | ||||||
|  | 
 | ||||||
|  |     LevelData* levelData; | ||||||
|  | 
 | ||||||
|  |     explicit MainWindow(QWidget *parent = 0); | ||||||
|  |     ~MainWindow(); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     void InitSlots(); | ||||||
|  |     void InitSlotsForAddPolys(); | ||||||
|  |     void InitSlotsForModifyPolys(); | ||||||
|  | 
 | ||||||
|  |     void SetImagePixmap(QPixmap* p); | ||||||
|  | 
 | ||||||
|  | signals: | ||||||
|  |     void deleteButtonPressed(); | ||||||
|  | 
 | ||||||
|  | public slots: | ||||||
|  |     void LoadBackgroundSlot(); | ||||||
|  |     void RadioButtonAddPolysSelected(); | ||||||
|  |     void RadioButtonModifyPolysSelected(); | ||||||
|  | 
 | ||||||
|  |     void OnSaveButtonPressed(); | ||||||
|  |     void OnLoadButtonPressed(); | ||||||
|  |      | ||||||
|  | private: | ||||||
|  |     Ui::MainWindow *ui; | ||||||
|  | protected: | ||||||
|  |     void keyReleaseEvent(QKeyEvent* event); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #endif // MAINWINDOW_H
 | ||||||
							
								
								
									
										254
									
								
								Black_okospace_levelcreator/mainwindow.ui
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										254
									
								
								Black_okospace_levelcreator/mainwindow.ui
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,254 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <ui version="4.0"> | ||||||
|  |  <class>MainWindow</class> | ||||||
|  |  <widget class="QMainWindow" name="MainWindow"> | ||||||
|  |   <property name="geometry"> | ||||||
|  |    <rect> | ||||||
|  |     <x>0</x> | ||||||
|  |     <y>0</y> | ||||||
|  |     <width>720</width> | ||||||
|  |     <height>453</height> | ||||||
|  |    </rect> | ||||||
|  |   </property> | ||||||
|  |   <property name="windowTitle"> | ||||||
|  |    <string>MainWindow</string> | ||||||
|  |   </property> | ||||||
|  |   <widget class="QWidget" name="centralWidget"> | ||||||
|  |    <property name="sizePolicy"> | ||||||
|  |     <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||||||
|  |      <horstretch>0</horstretch> | ||||||
|  |      <verstretch>0</verstretch> | ||||||
|  |     </sizepolicy> | ||||||
|  |    </property> | ||||||
|  |    <property name="minimumSize"> | ||||||
|  |     <size> | ||||||
|  |      <width>0</width> | ||||||
|  |      <height>0</height> | ||||||
|  |     </size> | ||||||
|  |    </property> | ||||||
|  |    <property name="layoutDirection"> | ||||||
|  |     <enum>Qt::LeftToRight</enum> | ||||||
|  |    </property> | ||||||
|  |    <layout class="QHBoxLayout" name="horizontalLayout"> | ||||||
|  |     <property name="spacing"> | ||||||
|  |      <number>0</number> | ||||||
|  |     </property> | ||||||
|  |     <property name="sizeConstraint"> | ||||||
|  |      <enum>QLayout::SetMinAndMaxSize</enum> | ||||||
|  |     </property> | ||||||
|  |     <property name="margin"> | ||||||
|  |      <number>0</number> | ||||||
|  |     </property> | ||||||
|  |     <item> | ||||||
|  |      <widget class="QFrame" name="frame"> | ||||||
|  |       <property name="sizePolicy"> | ||||||
|  |        <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> | ||||||
|  |         <horstretch>0</horstretch> | ||||||
|  |         <verstretch>0</verstretch> | ||||||
|  |        </sizepolicy> | ||||||
|  |       </property> | ||||||
|  |       <property name="minimumSize"> | ||||||
|  |        <size> | ||||||
|  |         <width>150</width> | ||||||
|  |         <height>400</height> | ||||||
|  |        </size> | ||||||
|  |       </property> | ||||||
|  |       <property name="maximumSize"> | ||||||
|  |        <size> | ||||||
|  |         <width>150</width> | ||||||
|  |         <height>16777215</height> | ||||||
|  |        </size> | ||||||
|  |       </property> | ||||||
|  |       <property name="frameShape"> | ||||||
|  |        <enum>QFrame::StyledPanel</enum> | ||||||
|  |       </property> | ||||||
|  |       <property name="frameShadow"> | ||||||
|  |        <enum>QFrame::Raised</enum> | ||||||
|  |       </property> | ||||||
|  |       <widget class="QRadioButton" name="radioButtonModifyPolys"> | ||||||
|  |        <property name="geometry"> | ||||||
|  |         <rect> | ||||||
|  |          <x>10</x> | ||||||
|  |          <y>62</y> | ||||||
|  |          <width>83</width> | ||||||
|  |          <height>17</height> | ||||||
|  |         </rect> | ||||||
|  |        </property> | ||||||
|  |        <property name="text"> | ||||||
|  |         <string>Modify polys</string> | ||||||
|  |        </property> | ||||||
|  |       </widget> | ||||||
|  |       <widget class="QRadioButton" name="radioButtonAddPolys"> | ||||||
|  |        <property name="geometry"> | ||||||
|  |         <rect> | ||||||
|  |          <x>10</x> | ||||||
|  |          <y>39</y> | ||||||
|  |          <width>70</width> | ||||||
|  |          <height>17</height> | ||||||
|  |         </rect> | ||||||
|  |        </property> | ||||||
|  |        <property name="text"> | ||||||
|  |         <string>Add polys</string> | ||||||
|  |        </property> | ||||||
|  |        <property name="checked"> | ||||||
|  |         <bool>true</bool> | ||||||
|  |        </property> | ||||||
|  |       </widget> | ||||||
|  |       <widget class="QPushButton" name="LoadBackgroundButton"> | ||||||
|  |        <property name="geometry"> | ||||||
|  |         <rect> | ||||||
|  |          <x>10</x> | ||||||
|  |          <y>10</y> | ||||||
|  |          <width>131</width> | ||||||
|  |          <height>23</height> | ||||||
|  |         </rect> | ||||||
|  |        </property> | ||||||
|  |        <property name="text"> | ||||||
|  |         <string>Load background</string> | ||||||
|  |        </property> | ||||||
|  |       </widget> | ||||||
|  |       <widget class="QPushButton" name="SaveLevelButton"> | ||||||
|  |        <property name="geometry"> | ||||||
|  |         <rect> | ||||||
|  |          <x>10</x> | ||||||
|  |          <y>100</y> | ||||||
|  |          <width>131</width> | ||||||
|  |          <height>23</height> | ||||||
|  |         </rect> | ||||||
|  |        </property> | ||||||
|  |        <property name="text"> | ||||||
|  |         <string>Save level</string> | ||||||
|  |        </property> | ||||||
|  |       </widget> | ||||||
|  |       <widget class="QPushButton" name="LoadLevelButton"> | ||||||
|  |        <property name="geometry"> | ||||||
|  |         <rect> | ||||||
|  |          <x>10</x> | ||||||
|  |          <y>130</y> | ||||||
|  |          <width>131</width> | ||||||
|  |          <height>23</height> | ||||||
|  |         </rect> | ||||||
|  |        </property> | ||||||
|  |        <property name="text"> | ||||||
|  |         <string>Load level</string> | ||||||
|  |        </property> | ||||||
|  |       </widget> | ||||||
|  |      </widget> | ||||||
|  |     </item> | ||||||
|  |     <item> | ||||||
|  |      <spacer name="verticalSpacer"> | ||||||
|  |       <property name="orientation"> | ||||||
|  |        <enum>Qt::Vertical</enum> | ||||||
|  |       </property> | ||||||
|  |       <property name="sizeType"> | ||||||
|  |        <enum>QSizePolicy::Minimum</enum> | ||||||
|  |       </property> | ||||||
|  |       <property name="sizeHint" stdset="0"> | ||||||
|  |        <size> | ||||||
|  |         <width>20</width> | ||||||
|  |         <height>40</height> | ||||||
|  |        </size> | ||||||
|  |       </property> | ||||||
|  |      </spacer> | ||||||
|  |     </item> | ||||||
|  |     <item> | ||||||
|  |      <widget class="QScrollArea" name="scrollArea"> | ||||||
|  |       <property name="sizePolicy"> | ||||||
|  |        <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> | ||||||
|  |         <horstretch>0</horstretch> | ||||||
|  |         <verstretch>0</verstretch> | ||||||
|  |        </sizepolicy> | ||||||
|  |       </property> | ||||||
|  |       <property name="minimumSize"> | ||||||
|  |        <size> | ||||||
|  |         <width>0</width> | ||||||
|  |         <height>0</height> | ||||||
|  |        </size> | ||||||
|  |       </property> | ||||||
|  |       <property name="verticalScrollBarPolicy"> | ||||||
|  |        <enum>Qt::ScrollBarAlwaysOn</enum> | ||||||
|  |       </property> | ||||||
|  |       <property name="horizontalScrollBarPolicy"> | ||||||
|  |        <enum>Qt::ScrollBarAlwaysOn</enum> | ||||||
|  |       </property> | ||||||
|  |       <property name="widgetResizable"> | ||||||
|  |        <bool>true</bool> | ||||||
|  |       </property> | ||||||
|  |       <property name="alignment"> | ||||||
|  |        <set>Qt::AlignJustify|Qt::AlignVCenter</set> | ||||||
|  |       </property> | ||||||
|  |       <widget class="QWidget" name="scrollAreaWidgetContents"> | ||||||
|  |        <property name="geometry"> | ||||||
|  |         <rect> | ||||||
|  |          <x>0</x> | ||||||
|  |          <y>0</y> | ||||||
|  |          <width>978</width> | ||||||
|  |          <height>658</height> | ||||||
|  |         </rect> | ||||||
|  |        </property> | ||||||
|  |        <property name="sizePolicy"> | ||||||
|  |         <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||||||
|  |          <horstretch>0</horstretch> | ||||||
|  |          <verstretch>0</verstretch> | ||||||
|  |         </sizepolicy> | ||||||
|  |        </property> | ||||||
|  |        <layout class="QVBoxLayout" name="verticalLayout"> | ||||||
|  |         <item> | ||||||
|  |          <widget class="CustomLabel" name="Image"> | ||||||
|  |           <property name="sizePolicy"> | ||||||
|  |            <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||||||
|  |             <horstretch>0</horstretch> | ||||||
|  |             <verstretch>0</verstretch> | ||||||
|  |            </sizepolicy> | ||||||
|  |           </property> | ||||||
|  |           <property name="minimumSize"> | ||||||
|  |            <size> | ||||||
|  |             <width>960</width> | ||||||
|  |             <height>640</height> | ||||||
|  |            </size> | ||||||
|  |           </property> | ||||||
|  |           <property name="frameShape"> | ||||||
|  |            <enum>QFrame::Box</enum> | ||||||
|  |           </property> | ||||||
|  |           <property name="text"> | ||||||
|  |            <string/> | ||||||
|  |           </property> | ||||||
|  |          </widget> | ||||||
|  |         </item> | ||||||
|  |        </layout> | ||||||
|  |       </widget> | ||||||
|  |      </widget> | ||||||
|  |     </item> | ||||||
|  |    </layout> | ||||||
|  |   </widget> | ||||||
|  |   <widget class="QMenuBar" name="menuBar"> | ||||||
|  |    <property name="geometry"> | ||||||
|  |     <rect> | ||||||
|  |      <x>0</x> | ||||||
|  |      <y>0</y> | ||||||
|  |      <width>720</width> | ||||||
|  |      <height>21</height> | ||||||
|  |     </rect> | ||||||
|  |    </property> | ||||||
|  |   </widget> | ||||||
|  |   <widget class="QToolBar" name="mainToolBar"> | ||||||
|  |    <attribute name="toolBarArea"> | ||||||
|  |     <enum>TopToolBarArea</enum> | ||||||
|  |    </attribute> | ||||||
|  |    <attribute name="toolBarBreak"> | ||||||
|  |     <bool>false</bool> | ||||||
|  |    </attribute> | ||||||
|  |   </widget> | ||||||
|  |   <widget class="QStatusBar" name="statusBar"/> | ||||||
|  |  </widget> | ||||||
|  |  <layoutdefault spacing="6" margin="11"/> | ||||||
|  |  <customwidgets> | ||||||
|  |   <customwidget> | ||||||
|  |    <class>CustomLabel</class> | ||||||
|  |    <extends>QLabel</extends> | ||||||
|  |    <header>customlabel.h</header> | ||||||
|  |   </customwidget> | ||||||
|  |  </customwidgets> | ||||||
|  |  <resources/> | ||||||
|  |  <connections/> | ||||||
|  | </ui> | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user