qmlfrontend/engine_instance.h
branchui-scaling
changeset 15288 c4fd2813b127
parent 15222 b32c52c76977
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qmlfrontend/engine_instance.h	Wed Jul 31 23:14:27 2019 +0200
@@ -0,0 +1,61 @@
+#ifndef ENGINEINSTANCE_H
+#define ENGINEINSTANCE_H
+
+#include <QImage>
+#include <QObject>
+#include <QOpenGLContext>
+
+#include "engine_interface.h"
+#include "game_config.h"
+
+class EngineInstance : public QObject {
+  Q_OBJECT
+
+ public:
+  explicit EngineInstance(const QString& libraryPath,
+                          QObject* parent = nullptr);
+  ~EngineInstance();
+
+  Q_PROPERTY(bool isValid READ isValid NOTIFY isValidChanged)
+
+  void sendConfig(const GameConfig& config);
+  void renderFrame();
+  void setOpenGLContext(QOpenGLContext* context);
+  QImage generatePreview();
+
+  bool isValid() const;
+
+ signals:
+  void isValidChanged(bool isValid);
+
+ public slots:
+  void advance(quint32 ticks);
+  void moveCamera(const QPoint& delta);
+  void simpleEvent(Engine::SimpleEventType event_type);
+  void longEvent(Engine::LongEventType event_type,
+                 Engine::LongEventState state);
+  void positionedEvent(Engine::PositionedEventType event_type, qint32 x,
+                       qint32 y);
+
+ private:
+  Engine::EngineInstance* m_instance;
+
+  Engine::hedgewars_engine_protocol_version_t*
+      hedgewars_engine_protocol_version;
+  Engine::start_engine_t* start_engine;
+  Engine::generate_preview_t* generate_preview;
+  Engine::dispose_preview_t* dispose_preview;
+  Engine::cleanup_t* cleanup;
+  Engine::send_ipc_t* send_ipc;
+  Engine::read_ipc_t* read_ipc;
+  Engine::setup_current_gl_context_t* setup_current_gl_context;
+  Engine::render_frame_t* render_frame;
+  Engine::advance_simulation_t* advance_simulation;
+  Engine::move_camera_t* move_camera;
+  Engine::simple_event_t* simple_event;
+  Engine::long_event_t* long_event;
+  Engine::positioned_event_t* positioned_event;
+  bool m_isValid;
+};
+
+#endif  // ENGINEINSTANCE_H