switch to using own event system

This commit is contained in:
2026-06-13 17:42:16 +02:00
parent ed17664ef1
commit 5317f35198
49 changed files with 611 additions and 300 deletions

View File

@@ -9,7 +9,8 @@
#include <QTimer>
#include <QVector2D>
#include "FireEvent.h"
#include "EventHandler.h"
#include "WeaponFiredEvent.h"
#include "entt/entity/entity.hpp"
#include "EntitySelectedEvent.h"
@@ -20,23 +21,21 @@
class ArenaSimulation;
class QPainter;
class ArenaView : public QOpenGLWidget
class ArenaView : public QOpenGLWidget,
public EventHandler<WeaponFiredEvent>
{
Q_OBJECT
public:
ArenaView(ArenaSimulation* sim, const VisualsConfig* visuals,
QWidget* parent = nullptr);
~ArenaView() override;
void setGameSpeed(double multiplier);
double gameSpeed() const;
void togglePause();
void stopRendering();
signals:
void speedChanged(double multiplier);
void finished();
protected:
void paintGL() override;
void mousePressEvent(QMouseEvent* event) override;
@@ -45,6 +44,8 @@ private slots:
void onFrame();
private:
void handleEvent(std::shared_ptr<const WeaponFiredEvent> event) override;
void drawTiles(QPainter& painter);
void drawBuildings(QPainter& painter);
void drawStations(QPainter& painter);
@@ -62,7 +63,7 @@ private:
struct ActiveBeam
{
FireEvent event;
WeaponFiredEvent event;
qint64 emittedWallMs;
QVector2D targetOffset;
};