1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-11-07 11:22:45 +01:00
openrw/rwviewer/ViewerWindow.hpp

83 lines
1.5 KiB
C++
Raw Normal View History

2016-09-09 22:13:21 +02:00
#pragma once
2014-02-10 13:41:05 +01:00
#ifndef _VIEWERWINDOW_HPP_
#define _VIEWERWINDOW_HPP_
2016-09-09 22:13:21 +02:00
#include <core/Logger.hpp>
2015-04-18 02:11:17 +02:00
#include <engine/GameData.hpp>
#include <engine/GameWorld.hpp>
#include <QMainWindow>
#include <QStackedWidget>
2014-09-21 17:13:01 +02:00
#include <QVBoxLayout>
2014-02-10 13:41:05 +01:00
#include <array>
2014-02-10 13:41:05 +01:00
class ViewerWidget;
class ViewerInterface;
2015-04-13 02:48:29 +02:00
class GameRenderer;
class QGLContext;
2014-03-01 12:19:33 +01:00
2016-09-09 22:13:21 +02:00
class ViewerWindow : public QMainWindow {
Q_OBJECT
enum ViewMode { Object = 0, Model = 1, World = 2, _Count };
2015-04-13 02:48:29 +02:00
2016-09-09 22:13:21 +02:00
Logger engineLog;
WorkContext work;
2016-09-09 22:13:21 +02:00
GameData* gameData;
GameWorld* gameWorld;
GameRenderer* renderer;
GameState* state;
2015-04-13 02:48:29 +02:00
2016-09-09 22:13:21 +02:00
/** Contains the OGL context */
ViewerWidget* viewerWidget;
2016-09-09 22:13:21 +02:00
std::array<ViewerInterface*, ViewMode::_Count> m_views;
std::array<std::string, ViewMode::_Count> m_viewNames;
2014-09-21 17:13:01 +02:00
2016-09-09 22:13:21 +02:00
QStackedWidget* viewSwitcher;
2014-09-21 17:13:01 +02:00
2016-09-09 22:13:21 +02:00
QGLContext* context;
2014-02-10 13:41:05 +01:00
public:
2016-09-09 22:13:21 +02:00
ViewerWindow(QWidget* parent = 0, Qt::WindowFlags flags = 0);
2014-02-11 15:41:46 +01:00
2016-09-09 22:13:21 +02:00
/**
* @brief openGame Loads a game's dat file.
* @param datFile
*/
void openGame(const QString& datFile);
2014-02-10 16:34:09 +01:00
2016-09-09 22:13:21 +02:00
virtual void showEvent(QShowEvent*);
2014-06-08 02:58:49 +02:00
2016-09-09 22:13:21 +02:00
virtual void closeEvent(QCloseEvent*);
2014-02-11 06:46:29 +01:00
2014-02-10 16:34:09 +01:00
public slots:
2016-09-09 22:13:21 +02:00
void openAnimations();
2014-03-01 12:19:33 +01:00
2016-09-09 22:13:21 +02:00
void loadGame();
2014-06-08 02:58:49 +02:00
2016-09-09 22:13:21 +02:00
void loadGame(const QString& path);
2014-06-08 02:58:49 +02:00
signals:
2016-09-09 22:13:21 +02:00
void loadedData(GameWorld* world);
void loadAnimations(const QString& file);
2014-02-11 15:41:46 +01:00
private slots:
2016-09-09 22:13:21 +02:00
void openRecent();
2014-02-11 15:41:46 +01:00
2016-09-09 22:13:21 +02:00
void switchView(int mode);
2016-09-09 22:13:21 +02:00
void showObjectModel(uint16_t object);
2014-02-11 15:41:46 +01:00
private:
2016-09-09 22:13:21 +02:00
QList<QAction*> recentGames;
QAction* recentSep;
void updateRecentGames();
2014-02-10 13:41:05 +01:00
};
2016-09-09 22:13:21 +02:00
#endif