GWF_PowerUpInjector/mainwindow.h

95 lines
1.9 KiB
C++

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QString>
#include <QVector>
#include <QDir>
#include <QFileDialog>
#include <QVector3D>
#include <QVector4D>
#include <QPixmap>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonValue>
#include <QJsonObject>
#include <QMessageBox>
struct PowerUpInfo
{
QVector3D mPosition;
QVector4D mRotation;
QVector3D mScale;
};
struct LevelInfo
{
QString mLevelName;
QString mDescription;
QString mPublishedID;
int mMusic;
int mSkybox;
QPixmap mPreview;
QVector<PowerUpInfo> mPowerUps;
int mMaxViewID;
QVector<QVector3D> mObjectPositions;
QString mMapPath;
QJsonObject mMapData;
};
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
#define MAX_POWERUPS 100
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
void initializeAsync(); // Async initialization for splash screen
void findSteamPath();
void updateLevels();
QVector<PowerUpInfo> findPowerUps(QJsonObject aMapData);
QVector<QVector3D> getObjectPositions(QJsonObject aObj);
void saveMap(LevelInfo aLevelInfo, bool aBackup = true);
int getMaxViewID(QJsonObject aMapData);
signals:
void loadingProgress(int percent, const QString &status);
void loadingComplete();
private slots:
void on_listWidget_MapSelect_currentRowChanged(int currentRow);
void on_listWidget_powerups_currentRowChanged(int currentRow);
void on_pushButton_Generate_clicked();
void on_pushButton_SavePowerUp_clicked();
void on_pushButton_NewPowerUp_clicked();
void on_pushButton_DeletePowerUp_clicked();
void on_pushButton_Restore_clicked();
private:
void clearMapDetails();
void clearPowerupDetails();
void refreshPowerupList(int mapRow);
Ui::MainWindow *ui;
QString mSteamPath;
QVector<LevelInfo> mLevels;
};
#endif // MAINWINDOW_H