start better input events

main
Benjamin Kraft 2 years ago
parent 12ac980057
commit 84a07e4b21
  1. 5
      src/Event.h
  2. 2
      src/Listener.cpp
  3. 4
      src/Window.cpp
  4. 11
      src/Window.h
  5. 30
      src/main.cpp

@ -2,10 +2,9 @@
#include <string>
#include <QEvent>
#include <QInputEvent>
struct InputEvent{
QEvent::Type type;
};
using InputEvent = QInputEvent;
struct GameEvent {
int time = 0;

@ -9,5 +9,5 @@ void GameListener::accept(GameEvent *event) {
}
void InputListener::accept(InputEvent *event) {
OnMouseClicked();
// TODO distinguish QEvent Type
}

@ -1 +1,5 @@
#include "Window.h"
void Window::mousePressEvent(QMouseEvent *event) {
InputQueue->submitEvent(event);
}

@ -1,7 +1,16 @@
#pragma once
#include <QWidget>
#include "Queue.h"
#include "Audio.h"
#include "FileManager.h"
class Window : public QWidget {
public:
static InputQueue * InputQueue;
static GameQueue * GameQueue;
static Audio * AudioManager;
static FileManager * FileManager;
protected:
void mousePressEvent(QMouseEvent *event) override;
};

@ -1,5 +1,4 @@
#include <QApplication>
#include <QWidget>
#include <iostream>
#include "Queue.h"
#include "Audio.h"
@ -9,11 +8,6 @@
using std::cout, std::endl;
auto audioManager = new Audio;
auto fileManager = new FileManager;
auto gameQueue = new GameQueue;
auto inputQueue = new InputQueue;
int main(int argc, char * argv[]){
QApplication app(argc, argv);
@ -24,24 +18,28 @@ int main(int argc, char * argv[]){
/*
for (int i = 0; i < 10'000; i++){
fileManager->readFile("path" + std::to_string(i), [](const std::string& content){
FileManager->readFile("path" + std::to_string(i), [](const std::string& content){
std::cout << content << std::endl;
});
fileManager->writeFile("path" + std::to_string(i), "some content" + std::to_string(i));
FileManager->writeFile("path" + std::to_string(i), "some content" + std::to_string(i));
}
*/
auto player = new Player;
inputQueue->registerListener(player);
inputQueue->submitEvent<InputEvent>(new InputEvent);
gameQueue->registerListener(player);
gameQueue->submitEvent<CoinCollectEvent>(new CoinCollectEvent);
gameQueue->submitEvent<DamageEvent>(new DamageEvent);
Window::InputQueue = new InputQueue;
Window::GameQueue = new GameQueue;
Window::AudioManager = new Audio;
Window::FileManager = new FileManager;
Window window;
window.show();
auto player = new Player;
Window::InputQueue->registerListener(player);
Window::GameQueue->registerListener(player);
Window::GameQueue->submitEvent<CoinCollectEvent>(new CoinCollectEvent);
Window::GameQueue->submitEvent<DamageEvent>(new DamageEvent);
return QApplication::exec();
}
Loading…
Cancel
Save