qmlfrontend/game_view.h
author Wuzzy <Wuzzy2@mail.ru>
Thu, 03 Jan 2019 19:46:48 +0100
changeset 14535 5ac181cb2396
parent 14311 92e5682810d4
child 14733 57293f34ce59
permissions -rw-r--r--
Fix bee targeting fail across wrap world edge Previously, the bee always aimed for the light area, no matter where you actually put the target. It also got confused whenever it flew across the wrap world edge. How the bee works now: 1) The placed bee target is *not* recalculated when it was placed in the "gray" part of the wrap world edge. This allows for more fine-tuning. 1a) Place target in light area: bee aims for target light area 1b) Place target in gray area: bee aims for target, but flies to gray area first 2) Bee target is recalculated whenever bee passes the wrap world edge.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14164
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
     1
#ifndef GAMEVIEW_H
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
     2
#define GAMEVIEW_H
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
     3
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
     4
#include <QQuickItem>
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
     5
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
     6
#include <QPointer>
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
     7
#include <QScopedPointer>
14164
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
     8
#include <QtGui/QOpenGLFunctions>
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
     9
#include <QtGui/QOpenGLShaderProgram>
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    10
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    11
#include "engine_instance.h"
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    12
14164
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    13
class GameViewRenderer : public QObject, protected QOpenGLFunctions {
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    14
  Q_OBJECT
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    15
 public:
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    16
  GameViewRenderer();
14164
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    17
  ~GameViewRenderer();
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    18
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    19
  void tick(quint32 delta);
14164
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    20
  void setViewportSize(const QSize& size);
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    21
  void setEngineInstance(EngineInstance* engineInstance);
14164
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    22
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    23
 public slots:
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    24
  void paint();
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    25
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    26
 private:
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    27
  quint32 m_delta;
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    28
  QPointer<EngineInstance> m_engineInstance;
14164
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    29
};
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    30
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    31
class GameView : public QQuickItem {
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    32
  Q_OBJECT
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    33
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    34
  Q_PROPERTY(EngineInstance* engineInstance READ engineInstance WRITE
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    35
                 setEngineInstance NOTIFY engineInstanceChanged)
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    36
14164
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    37
 public:
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    38
  GameView();
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    39
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    40
  Q_INVOKABLE void tick(quint32 delta);
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    41
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    42
  EngineInstance* engineInstance() const;
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    43
14164
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    44
 signals:
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    45
  void engineInstanceChanged(EngineInstance* engineInstance);
14164
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    46
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    47
 public slots:
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    48
  void sync();
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    49
  void cleanup();
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    50
  void setEngineInstance(EngineInstance* engineInstance);
14164
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    51
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    52
 private slots:
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    53
  void handleWindowChanged(QQuickWindow* win);
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    54
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    55
 private:
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    56
  quint32 m_delta;
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    57
  QScopedPointer<GameViewRenderer> m_renderer;
14164
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    58
  bool m_windowChanged;
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    59
  qint32 m_centerX;
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    60
  qint32 m_centerY;
14311
92e5682810d4 Prepare to have possibility to pass opengl context to engine
unc0rr
parents: 14175
diff changeset
    61
  QPointer<EngineInstance> m_engineInstance;
14164
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    62
};
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    63
745c73e0e644 Start working on frontend to rust engine rewrite
unC0Rr
parents:
diff changeset
    64
#endif  // GAMEVIEW_H