qmlfrontend/engine_instance.h
author nemo
Tue, 30 Apr 2019 09:36:13 -0400
changeset 14859 8d65728c4ed0
parent 14854 aed75d439027
child 15217 b32c52c76977
permissions -rw-r--r--
Backed out changeset 13589d529899 So, we only disabled this on the release branch in r29d614a5c9eb due to having discovered it JUST before release. We should fix it properly in default...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14154
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
     1
#ifndef ENGINEINSTANCE_H
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
     2
#define ENGINEINSTANCE_H
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
     3
14373
4409344db447 Rework EngineInstance::generatePreview, add preview cleanup function in enginelib
unC0Rr
parents: 14372
diff changeset
     4
#include <QImage>
14154
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
     5
#include <QObject>
14290
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14271
diff changeset
     6
#include <QOpenGLContext>
14154
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
     7
14372
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
     8
#include "engine_interface.h"
14271
1aac8a62be6f Implement send_ipc and read_ipc in engine lib, send_ipc in frontend
unC0Rr
parents: 14154
diff changeset
     9
#include "game_config.h"
1aac8a62be6f Implement send_ipc and read_ipc in engine lib, send_ipc in frontend
unC0Rr
parents: 14154
diff changeset
    10
14154
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    11
class EngineInstance : public QObject {
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    12
  Q_OBJECT
14854
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    13
14154
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    14
 public:
14854
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    15
  using SimpleEventType = Engine::SimpleEventType;
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    16
  Q_ENUMS(SimpleEventType)
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    17
  using LongEventType = Engine::LongEventType;
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    18
  Q_ENUMS(LongEventType)
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    19
  using LongEventState = Engine::LongEventState;
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    20
  Q_ENUMS(LongEventState)
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    21
  using PositionedEventType = Engine::PositionedEventType;
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    22
  Q_ENUMS(PositionedEventType)
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    23
14372
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    24
  explicit EngineInstance(const QString& libraryPath,
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    25
                          QObject* parent = nullptr);
14154
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    26
  ~EngineInstance();
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    27
14372
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    28
  Q_PROPERTY(bool isValid READ isValid NOTIFY isValidChanged)
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    29
14290
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14271
diff changeset
    30
  void sendConfig(const GameConfig& config);
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14271
diff changeset
    31
  void renderFrame();
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14271
diff changeset
    32
  void setOpenGLContext(QOpenGLContext* context);
14373
4409344db447 Rework EngineInstance::generatePreview, add preview cleanup function in enginelib
unC0Rr
parents: 14372
diff changeset
    33
  QImage generatePreview();
14154
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    34
14372
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    35
  bool isValid() const;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    36
14154
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    37
 signals:
14372
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    38
  void isValidChanged(bool isValid);
14154
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    39
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    40
 public slots:
14842
ef9630519491 Fix some minor problems with new frontend code
unc0rr
parents: 14713
diff changeset
    41
  void advance(quint32 ticks);
ef9630519491 Fix some minor problems with new frontend code
unc0rr
parents: 14713
diff changeset
    42
  void moveCamera(const QPoint& delta);
14854
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    43
  void simpleEvent(SimpleEventType event_type);
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    44
  void longEvent(LongEventType event_type, LongEventState state);
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    45
  void positionedEvent(PositionedEventType event_type, qint32 x, qint32 y);
14154
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    46
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    47
 private:
14290
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14271
diff changeset
    48
  Engine::EngineInstance* m_instance;
14372
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    49
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    50
  Engine::hedgewars_engine_protocol_version_t*
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    51
      hedgewars_engine_protocol_version;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    52
  Engine::start_engine_t* start_engine;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    53
  Engine::generate_preview_t* generate_preview;
14373
4409344db447 Rework EngineInstance::generatePreview, add preview cleanup function in enginelib
unC0Rr
parents: 14372
diff changeset
    54
  Engine::dispose_preview_t* dispose_preview;
14372
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    55
  Engine::cleanup_t* cleanup;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    56
  Engine::send_ipc_t* send_ipc;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    57
  Engine::read_ipc_t* read_ipc;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    58
  Engine::setup_current_gl_context_t* setup_current_gl_context;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    59
  Engine::render_frame_t* render_frame;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    60
  Engine::advance_simulation_t* advance_simulation;
14713
cc6ab1e3f7d5 Allow to move camera around
unc0rr
parents: 14373
diff changeset
    61
  Engine::move_camera_t* move_camera;
14854
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    62
  Engine::simple_event_t* simple_event;
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    63
  Engine::long_event_t* long_event;
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    64
  Engine::positioned_event_t* positioned_event;
14372
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14290
diff changeset
    65
  bool m_isValid;
14154
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    66
};
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    67
14854
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    68
Q_DECLARE_METATYPE(EngineInstance::SimpleEventType)
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    69
Q_DECLARE_METATYPE(EngineInstance::LongEventType)
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    70
Q_DECLARE_METATYPE(EngineInstance::LongEventState)
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    71
Q_DECLARE_METATYPE(EngineInstance::PositionedEventType)
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14842
diff changeset
    72
14154
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    73
#endif  // ENGINEINSTANCE_H