qmlfrontend/engine_instance.h
author Wuzzy <Wuzzy2@mail.ru>
Mon, 16 Sep 2019 17:33:49 +0200
changeset 15431 8504fee3b601
parent 15238 b32c52c76977
child 15919 d52f5d8e75e6
permissions -rw-r--r--
Racer: Fix weird water splashes after waypoint placement Does not affect official racer, as only waypoint placement is touched. The reason was that the air attack gear sometimes was not deleted fast enough so it might occassionally drop some air bombs (these are deleted now). Also, the airplane position was set to water level, which caused another water splash.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14175
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
14394
4409344db447 Rework EngineInstance::generatePreview, add preview cleanup function in enginelib
unC0Rr
parents: 14393
diff changeset
     4
#include <QImage>
14175
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
     5
#include <QObject>
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14292
diff changeset
     6
#include <QOpenGLContext>
14175
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
     7
14393
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
     8
#include "engine_interface.h"
14292
1aac8a62be6f Implement send_ipc and read_ipc in engine lib, send_ipc in frontend
unC0Rr
parents: 14175
diff changeset
     9
#include "game_config.h"
1aac8a62be6f Implement send_ipc and read_ipc in engine lib, send_ipc in frontend
unC0Rr
parents: 14175
diff changeset
    10
14175
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
14875
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14863
diff changeset
    13
14175
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    14
 public:
14393
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    15
  explicit EngineInstance(const QString& libraryPath,
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    16
                          QObject* parent = nullptr);
14175
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    17
  ~EngineInstance();
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    18
14393
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    19
  Q_PROPERTY(bool isValid READ isValid NOTIFY isValidChanged)
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    20
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14292
diff changeset
    21
  void sendConfig(const GameConfig& config);
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14292
diff changeset
    22
  void renderFrame();
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14292
diff changeset
    23
  void setOpenGLContext(QOpenGLContext* context);
14394
4409344db447 Rework EngineInstance::generatePreview, add preview cleanup function in enginelib
unC0Rr
parents: 14393
diff changeset
    24
  QImage generatePreview();
14175
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    25
14393
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    26
  bool isValid() const;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    27
14175
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    28
 signals:
14393
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    29
  void isValidChanged(bool isValid);
14175
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    30
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    31
 public slots:
14863
ef9630519491 Fix some minor problems with new frontend code
unc0rr
parents: 14734
diff changeset
    32
  void advance(quint32 ticks);
ef9630519491 Fix some minor problems with new frontend code
unc0rr
parents: 14734
diff changeset
    33
  void moveCamera(const QPoint& delta);
15238
b32c52c76977 Marry C enums, Qt's metaobject system and QML
unc0rr
parents: 14875
diff changeset
    34
  void simpleEvent(Engine::SimpleEventType event_type);
b32c52c76977 Marry C enums, Qt's metaobject system and QML
unc0rr
parents: 14875
diff changeset
    35
  void longEvent(Engine::LongEventType event_type,
b32c52c76977 Marry C enums, Qt's metaobject system and QML
unc0rr
parents: 14875
diff changeset
    36
                 Engine::LongEventState state);
b32c52c76977 Marry C enums, Qt's metaobject system and QML
unc0rr
parents: 14875
diff changeset
    37
  void positionedEvent(Engine::PositionedEventType event_type, qint32 x,
b32c52c76977 Marry C enums, Qt's metaobject system and QML
unc0rr
parents: 14875
diff changeset
    38
                       qint32 y);
14175
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
 private:
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14292
diff changeset
    41
  Engine::EngineInstance* m_instance;
14393
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    42
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    43
  Engine::hedgewars_engine_protocol_version_t*
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    44
      hedgewars_engine_protocol_version;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    45
  Engine::start_engine_t* start_engine;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    46
  Engine::generate_preview_t* generate_preview;
14394
4409344db447 Rework EngineInstance::generatePreview, add preview cleanup function in enginelib
unC0Rr
parents: 14393
diff changeset
    47
  Engine::dispose_preview_t* dispose_preview;
14393
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    48
  Engine::cleanup_t* cleanup;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    49
  Engine::send_ipc_t* send_ipc;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    50
  Engine::read_ipc_t* read_ipc;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    51
  Engine::setup_current_gl_context_t* setup_current_gl_context;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    52
  Engine::render_frame_t* render_frame;
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    53
  Engine::advance_simulation_t* advance_simulation;
14734
cc6ab1e3f7d5 Allow to move camera around
unc0rr
parents: 14394
diff changeset
    54
  Engine::move_camera_t* move_camera;
14875
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14863
diff changeset
    55
  Engine::simple_event_t* simple_event;
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14863
diff changeset
    56
  Engine::long_event_t* long_event;
aed75d439027 Implement external events approach to input user actions into engine.
unc0rr
parents: 14863
diff changeset
    57
  Engine::positioned_event_t* positioned_event;
14393
b6824a53d4b1 Allow to instantiate HWEngine with different library binaries
unC0Rr
parents: 14311
diff changeset
    58
  bool m_isValid;
14175
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    59
};
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    60
8354b390f1a2 Some refactoring of qmlfrontend. It now shows land preview generated by hedgewars-engine
unC0Rr
parents:
diff changeset
    61
#endif  // ENGINEINSTANCE_H