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