This commit is contained in:
2025-04-19 21:32:57 -05:00
parent 87afa3a0ec
commit a39f43e439
9 changed files with 180 additions and 44 deletions

View File

@@ -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;
}
}

View File

@@ -9,9 +9,7 @@ namespace Archimedes {
public:
virtual ~Event() {
std::cout << (std::string)*this;
}
virtual ~Event() {}
virtual operator std::string() const = 0;

View File

@@ -20,7 +20,7 @@ namespace Archimedes {
void doFrame() {
//window.pollEvents();
window.pollEvents();
window.getSize(renderer->w, renderer->h);

View File

@@ -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;
};