idk
Some checks failed
Run ReCI Build Test / Explore-Gitea-Actions (push) Failing after 5m27s

This commit is contained in:
2024-08-08 14:24:15 -04:00
parent 483b5dadad
commit a8c85a29dd
4 changed files with 94 additions and 20 deletions

View File

@@ -103,12 +103,13 @@ namespace ReWindow
class MouseButtonDownEvent : public MouseEvent {
public:
MouseButton Button;
MouseButtonDownEvent(MouseButton Button) : MouseEvent() {}
explicit MouseButtonDownEvent(MouseButton Button) : MouseEvent() {}
};
class MouseButtonUpEvent : public MouseEvent {
public:
MouseButton Button;
explicit MouseButtonUpEvent(MouseButton Button) : MouseEvent() {}
};
class WindowResizeRequestEvent : public RWindowEvent

View File

@@ -2,9 +2,11 @@
#include <rewindow/types/window.h>
#include <jlog/jlog.hpp>
//aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Windows :/
#if _WIN32
#include <windows.h>
#endif
#include <GL/gl.h>

View File

@@ -6,7 +6,7 @@ using namespace ReWindow;
bool fullscreenmode = false;
bool open = false;
HINSTANCE hInstance = GetModuleHandle(NULL);
HINSTANCE hInstance = GetModuleHandle(nullptr);
HWND hwnd;
HDC hdc;
HGLRC glContext;
@@ -98,31 +98,102 @@ LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case WM_DESTROY:
exit(0);
case WM_SIZE:
break;
case WM_KEYDOWN: {
auto key = GetKeyFromWindowsScancode((WindowsScancode) wParam);
//Key repeat fix.
if (!pKeyboard->PressedKeys[key]) {
eWindow->OnKeyDownEvent(key);
eWindow->OnKeyDown(key);
eWindow->pressKey(key);
}
break;
case WM_KEYDOWN: {
auto key = GetKeyFromWindowsScancode((WindowsScancode) wParam);
//Key repeat fix.
if (!pKeyboard->PressedKeys[key]) {
eWindow->OnKeyDownEvent(key);
eWindow->OnKeyDown(key);
eWindow->pressKey(key);
}
break;
}
case WM_KEYUP: {
auto key = GetKeyFromWindowsScancode((WindowsScancode) wParam);
eWindow->OnKeyUpEvent(key);
eWindow->OnKeyUp(key);
eWindow->liftKey(key);
break;
auto key = GetKeyFromWindowsScancode((WindowsScancode) wParam);
eWindow->OnKeyUpEvent(key);
eWindow->OnKeyUp(key);
eWindow->liftKey(key);
break;
}
case WM_LBUTTONDOWN:
//Mouse Buttons.
case WM_MOUSEWHEEL: {
//If the wheel delta is positive, That's MWheelUp, Negative is MWheelDown.
int wheel_delta = GET_WHEEL_DELTA_WPARAM(wParam);
if (wheel_delta > 0)
eWindow->OnMouseButtonDownEvent(MouseButtons::MWheelUp),
eWindow->OnMouseButtonDown(MouseButtons::MWheelUp),
eWindow->OnMouseButtonUpEvent(MouseButtons::MWheelUp),
eWindow->OnMouseButtonUp(MouseButtons::MWheelUp);
else
eWindow->OnMouseButtonDownEvent(MouseButtons::MWheelDown),
eWindow->OnMouseButtonDown(MouseButtons::MWheelDown),
eWindow->OnMouseButtonUpEvent(MouseButtons::MWheelDown),
eWindow->OnMouseButtonUp(MouseButtons::MWheelDown);
break;
case WM_LBUTTONUP:
}
case WM_LBUTTONDOWN: {
eWindow->OnMouseButtonDownEvent(MouseButtons::Left);
eWindow->OnMouseButtonDown(MouseButtons::Left);
break;
case WM_MOUSEMOVE:
}
case WM_LBUTTONUP: {
eWindow->OnMouseButtonUpEvent(MouseButtons::Left);
eWindow->OnMouseButtonUp(MouseButtons::Left);
break;
}
case WM_RBUTTONDOWN: {
eWindow->OnMouseButtonDownEvent(MouseButtons::Right);
eWindow->OnMouseButtonDown(MouseButtons::Right);
break;
}
case WM_RBUTTONUP: {
eWindow->OnMouseButtonUpEvent(MouseButtons::Right);
eWindow->OnMouseButtonUp(MouseButtons::Right);
break;
}
case WM_MBUTTONDOWN: {
eWindow->OnMouseButtonDownEvent(MouseButtons::Middle);
eWindow->OnMouseButtonDown(MouseButtons::Middle);
break;
}
case WM_MBUTTONUP: {
eWindow->OnMouseButtonUpEvent(MouseButtons::Middle);
eWindow->OnMouseButtonUp(MouseButtons::Middle);
break;
}
case WM_XBUTTONDOWN: {
WORD button = GET_XBUTTON_WPARAM(wParam);
if (button == XBUTTON1)
eWindow->OnMouseButtonDownEvent(MouseButtons::Mouse4),
eWindow->OnMouseButtonDown(MouseButtons::Mouse4);
if (button == XBUTTON2)
eWindow->OnMouseButtonDownEvent(MouseButtons::Mouse5),
eWindow->OnMouseButtonDown(MouseButtons::Mouse5);
break;
}
case WM_XBUTTONUP: {
WORD button = GET_XBUTTON_WPARAM(wParam);
if (button == XBUTTON1)
eWindow->OnMouseButtonUpEvent(MouseButtons::Mouse4),
eWindow->OnMouseButtonUp(MouseButtons::Mouse4);
if (button == XBUTTON2)
eWindow->OnMouseButtonUpEvent(MouseButtons::Mouse5),
eWindow->OnMouseButtonUp(MouseButtons::Mouse5);
break;
}
case WM_MOUSEMOVE:
//This is the same as "Motion Notify" in the X Window System.
break;
}
if (pKeyboard != nullptr && cKeyboard != nullptr)
pKeyboard = cKeyboard;

View File

@@ -29,7 +29,7 @@ bool Key::operator<(const Key &rhs) const {
Key GetKeyFromX11Scancode(X11Scancode code) {
for (auto& key : Key::GetKeyboard())
for (const auto& key : Key::GetKeyboard())
if (key.x11ScanCode == code)
return key;
std::cout << "Unavaliable Scancode: " + std::to_string((int)code) << std::endl;