1
0
Fork 0
spectre/source/System/Event.cpp

74 lines
1.6 KiB
C++

#include <Spectre/System/Event.h>
#include <Spectre/Core/String.h>
namespace sp {
Event::Event(Type type) :
type (type)
{
}
std::string Event::toString() const
{
switch(type) {
case Type::Quit :
return "Quit";
case Type::Size :
return "Size (" + core::to_string(size.width) + ", " + core::to_string(size.height) + ")";
case Type::Key :
return "Key '" + key.getKeyName() + "' " + (key.pressed ? "pressed" : "released");
case Type::MouseButton :
return "MouseButton '" + mouseButton.getName() + "' " + (mouseButton.pressed ? "pressed" : "released");
case Type::MouseMove :
return "MouseMove (" + core::to_string(mouseMove.x) + ", " + core::to_string(mouseMove.y) + ")";
}
return "Unknown";
}
std::string Event::KeyEvent::getKeyName() const
{
return Keyboard::getKeyName(code);
}
std::string Event::MouseButtonEvent::getName() const
{
return Mouse::getButtonName(button);
}
// Helper methods
Event Event::createSize(Display *display, int width, int height)
{
Event event(Size);
event.size.display = display;
event.size.width = width;
event.size.height = height;
return event;
}
Event Event::createKey(Keyboard::Key code, bool pressed)
{
Event event(Key);
event.key.code = code;
event.key.pressed = pressed;
return event;
}
Event Event::createMouseButton(Mouse::Button button, bool pressed)
{
Event event(MouseButton);
event.mouseButton.button = button;
event.mouseButton.pressed = pressed;
return event;
}
Event Event::createMouseMove(unsigned int x, unsigned int y)
{
Event event(MouseMove);
event.mouseMove.x = x;
event.mouseMove.y = y;
return event;
}
} // namespace sp