Events
This commit is contained in:
@@ -95,15 +95,22 @@ namespace Archimedes {
|
||||
std::list<std::variant<std::string, Module*>> toOpen;
|
||||
|
||||
void handleEvents() {
|
||||
bool handled = false;
|
||||
while(!events.empty()) {
|
||||
for(auto it = runOrder.rbegin(); it != runOrder.rend(); it++) {
|
||||
if(modules[*it]->onEvent(*events.front())) {
|
||||
Event* e = events.front();
|
||||
events.pop_front();
|
||||
delete e;
|
||||
handled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(handled) {
|
||||
std::cout << "Error: Unhandled Event: " << (std::string) *events.front() << std::endl;
|
||||
}
|
||||
handled = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,9 +9,7 @@ namespace Archimedes {
|
||||
|
||||
public:
|
||||
|
||||
virtual ~Event() {
|
||||
std::cout << (std::string)*this;
|
||||
}
|
||||
virtual ~Event() {}
|
||||
|
||||
virtual operator std::string() const = 0;
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace Archimedes {
|
||||
|
||||
void doFrame() {
|
||||
|
||||
//window.pollEvents();
|
||||
window.pollEvents();
|
||||
|
||||
window.getSize(renderer->w, renderer->h);
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace Archimedes {
|
||||
|
||||
}
|
||||
|
||||
operator std::string() const { return "Archimedes::WindowResizeEvent"; }
|
||||
operator std::string() const override { return "Archimedes::WindowResizeEvent"; }
|
||||
|
||||
int width, height;
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace Archimedes {
|
||||
|
||||
}
|
||||
|
||||
operator std::string() const { return "Archimedes::WindowCloseEvent"; }
|
||||
operator std::string() const override { return "Archimedes::WindowCloseEvent"; }
|
||||
|
||||
const Window* window;
|
||||
};
|
||||
@@ -62,7 +62,7 @@ namespace Archimedes {
|
||||
|
||||
}
|
||||
|
||||
operator std::string() const { return "Archimedes::WindowKeyPressedEvent"; }
|
||||
operator std::string() const override { return "Archimedes::WindowKeyPressedEvent"; }
|
||||
|
||||
unsigned int key;
|
||||
unsigned int repeat;
|
||||
@@ -80,7 +80,7 @@ namespace Archimedes {
|
||||
|
||||
}
|
||||
|
||||
operator std::string() const { return "Archimedes::WindowKeyReleasedEvent"; }
|
||||
operator std::string() const override { return "Archimedes::WindowKeyReleasedEvent"; }
|
||||
|
||||
unsigned int key;
|
||||
};
|
||||
@@ -97,7 +97,7 @@ namespace Archimedes {
|
||||
|
||||
}
|
||||
|
||||
operator std::string() const { return "Archimedes::WindowMouseButtonPressedEvent"; }
|
||||
operator std::string() const override { return "Archimedes::WindowMouseButtonPressedEvent"; }
|
||||
|
||||
unsigned int button;
|
||||
};
|
||||
@@ -114,7 +114,7 @@ namespace Archimedes {
|
||||
|
||||
}
|
||||
|
||||
operator std::string() const { return "Archimedes::WindowMouseButtonReleasedEvent"; }
|
||||
operator std::string() const override { return "Archimedes::WindowMouseButtonReleasedEvent"; }
|
||||
|
||||
unsigned int button;
|
||||
};
|
||||
@@ -131,7 +131,7 @@ namespace Archimedes {
|
||||
|
||||
}
|
||||
|
||||
operator std::string() const { return "Archimedes::WindowScrollEvent"; }
|
||||
operator std::string() const override { return "Archimedes::WindowScrollEvent"; }
|
||||
|
||||
double dx, dy;
|
||||
};
|
||||
@@ -142,15 +142,15 @@ namespace Archimedes {
|
||||
|
||||
WindowMouseMovedEvent() : x(0), y(0) {}
|
||||
|
||||
WindowMouseMovedEvent(int x, int y) : x(x), y(y) {}
|
||||
WindowMouseMovedEvent(double x, double y) : x(x), y(y) {}
|
||||
|
||||
~WindowMouseMovedEvent() {
|
||||
|
||||
}
|
||||
|
||||
operator std::string() const { return "Archimedes::WindowMouseMovedEvent"; }
|
||||
operator std::string() const override { return "Archimedes::WindowMouseMovedEvent"; }
|
||||
|
||||
int x, y;
|
||||
double x, y;
|
||||
};
|
||||
|
||||
class WindowFocusedEvent : public Event {
|
||||
@@ -165,7 +165,7 @@ namespace Archimedes {
|
||||
|
||||
}
|
||||
|
||||
operator std::string() const { return "Archimedes::WindowFocusedEvent"; }
|
||||
operator std::string() const override { return "Archimedes::WindowFocusedEvent"; }
|
||||
|
||||
const Window* window;
|
||||
};
|
||||
@@ -182,7 +182,7 @@ namespace Archimedes {
|
||||
|
||||
}
|
||||
|
||||
operator std::string() const { return "Archimedes::WindowFocusLostEvent"; }
|
||||
operator std::string() const override { return "Archimedes::WindowFocusLostEvent"; }
|
||||
|
||||
const Window* window;
|
||||
};
|
||||
@@ -199,7 +199,7 @@ namespace Archimedes {
|
||||
|
||||
}
|
||||
|
||||
operator std::string() const { return "Archimedes::WindowMovedEvent"; }
|
||||
operator std::string() const override { return "Archimedes::WindowMovedEvent"; }
|
||||
|
||||
int x, y;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user