95 lines
3.3 KiB
C++
95 lines
3.3 KiB
C++
#include "WindowModule.h"
|
|
|
|
WindowModule::~WindowModule() {
|
|
if(app) {
|
|
app->unregisterEvent(Archimedes::ResizeWindowEvent());
|
|
app->unregisterEvent(Archimedes::CloseWindowEvent());
|
|
app->unregisterEvent(Archimedes::KeyPressedWindowEvent());
|
|
app->unregisterEvent(Archimedes::KeyReleasedWindowEvent());
|
|
app->unregisterEvent(Archimedes::MouseButtonPressedWindowEvent());
|
|
app->unregisterEvent(Archimedes::MouseButtonReleasedWindowEvent());
|
|
app->unregisterEvent(Archimedes::ScrollWindowEvent());
|
|
app->unregisterEvent(Archimedes::MouseMovedWindowEvent());
|
|
app->unregisterEvent(Archimedes::FocusedWindowEvent());
|
|
app->unregisterEvent(Archimedes::FocusLostWindowEvent());
|
|
app->unregisterEvent(Archimedes::MovedWindowEvent());
|
|
|
|
if(renderer) {
|
|
renderer->getCmdList().clear();
|
|
delete renderer;
|
|
}
|
|
|
|
if(window)
|
|
releaseWindow(window);
|
|
}
|
|
}
|
|
|
|
void WindowModule::onLoad() {
|
|
|
|
app->registerEvent(Archimedes::ResizeWindowEvent());
|
|
app->registerEvent(Archimedes::CloseWindowEvent());
|
|
app->registerEvent(Archimedes::KeyPressedWindowEvent());
|
|
app->registerEvent(Archimedes::KeyReleasedWindowEvent());
|
|
app->registerEvent(Archimedes::MouseButtonPressedWindowEvent());
|
|
app->registerEvent(Archimedes::MouseButtonReleasedWindowEvent());
|
|
app->registerEvent(Archimedes::ScrollWindowEvent());
|
|
app->registerEvent(Archimedes::MouseMovedWindowEvent());
|
|
app->registerEvent(Archimedes::FocusedWindowEvent());
|
|
app->registerEvent(Archimedes::FocusLostWindowEvent());
|
|
app->registerEvent(Archimedes::MovedWindowEvent());
|
|
|
|
renderer = new Archimedes::Renderer();
|
|
}
|
|
|
|
void WindowModule::run() {
|
|
|
|
if(window)
|
|
window->doFrame();
|
|
else
|
|
app->emitEvent(new Archimedes::DoUnloadModuleEvent(name));
|
|
}
|
|
|
|
bool WindowModule::onEvent(const Archimedes::Event& e) {
|
|
|
|
unsigned int type = app->getEventType(e);
|
|
|
|
if(type == app->getEventType(Archimedes::ResizeWindowEvent())) {
|
|
Archimedes::ResizeWindowEvent& event = (Archimedes::ResizeWindowEvent&) e;
|
|
renderer->w = event.width;
|
|
renderer->h = event.height;
|
|
return true;
|
|
} else if(type == app->getEventType(Archimedes::CloseWindowEvent())) {
|
|
app->emitEvent(new Archimedes::DoUnloadModuleEvent(name));
|
|
return true;
|
|
} else if(type == app->getEventType(Archimedes::KeyPressedWindowEvent())) {
|
|
|
|
return true;
|
|
} else if(type == app->getEventType(Archimedes::KeyReleasedWindowEvent())) {
|
|
|
|
return true;
|
|
} else if(type == app->getEventType(Archimedes::MouseButtonPressedWindowEvent())) {
|
|
|
|
return true;
|
|
} else if(type == app->getEventType(Archimedes::MouseButtonReleasedWindowEvent())) {
|
|
|
|
return true;
|
|
} else if(type == app->getEventType(Archimedes::ScrollWindowEvent())) {
|
|
|
|
return true;
|
|
} else if(type == app->getEventType(Archimedes::MouseMovedWindowEvent())) {
|
|
|
|
return true;
|
|
} else if(type == app->getEventType(Archimedes::FocusedWindowEvent())) {
|
|
|
|
return true;
|
|
} else if(type == app->getEventType(Archimedes::FocusLostWindowEvent())) {
|
|
|
|
return true;
|
|
} else if(type == app->getEventType(Archimedes::MovedWindowEvent())) {
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|