feat(event): implement OsInputGet for windows

This commit is contained in:
fallenoak 2023-03-15 17:40:07 -05:00
parent 788dde31ef
commit 885eeeabd8
7 changed files with 51 additions and 4 deletions

View File

@ -19,8 +19,6 @@
namespace Input {
CRect s_boundingRect;
int32_t s_queueHead;
int32_t s_queueTail;
OSEVENT s_queue[32];
MOUSEBUTTON s_buttonConversion[16] = {
@ -51,6 +49,8 @@ MOUSEMODE Input::s_mouseMode;
int32_t Input::s_numlockState;
int32_t Input::s_simulatedRightButtonClick;
uint32_t Input::s_metaKeyState;
int32_t Input::s_queueHead;
int32_t Input::s_queueTail;
#if defined(WHOA_SYSTEM_WIN)
int32_t Input::s_savedMouseSpeed;

View File

@ -19,6 +19,8 @@ namespace Input {
extern int32_t s_numlockState;
extern int32_t s_simulatedRightButtonClick;
extern uint32_t s_metaKeyState;
extern int32_t s_queueHead;
extern int32_t s_queueTail;
#if defined(WHOA_SYSTEM_WIN)
extern int32_t s_savedMouseSpeed;

View File

@ -3,6 +3,8 @@
#include <cstdint>
int32_t OsGuiProcessMessage(void* message);
int32_t OsWindowProc(void* window, uint32_t message, uintptr_t wparam, intptr_t lparam);
#endif

View File

@ -1,5 +1,9 @@
#include "event/Window.hpp"
int32_t OsGuiProcessMessage(void* message) {
return 0;
}
int32_t OsWindowProc(void* window, uint32_t message, uintptr_t wparam, intptr_t lparam) {
return 0;
}

View File

@ -1,5 +1,9 @@
#include "event/Window.hpp"
int32_t OsGuiProcessMessage(void* message) {
return 0;
}
int32_t OsWindowProc(void* window, uint32_t message, uintptr_t wparam, intptr_t lparam) {
return 0;
}

View File

@ -1,6 +1,36 @@
#include "event/Input.hpp"
#include "event/Window.hpp"
#include <windows.h>
int32_t OsInputGet(OSINPUT* id, int32_t* param0, int32_t* param1, int32_t* param2, int32_t* param3) {
// TODO
return 0;
// TODO window rect comparisons
while (Input::s_queueTail == Input::s_queueHead) {
MSG msg;
if (!PeekMessage(&msg, nullptr, 0, 0, 0)) {
return 0;
}
if (!GetMessage(&msg, nullptr, 0, 0)) {
*id = OS_INPUT_SHUTDOWN;
break;
}
if (OsGuiProcessMessage(&msg)) {
break;
}
if (Input::s_queueTail != Input::s_queueHead) {
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
OsQueueGet(id, param0, param1, param2, param3);
return 1;
}

View File

@ -2,6 +2,11 @@
#include "event/Input.hpp"
#include <windows.h>
int32_t OsGuiProcessMessage(void* message) {
// TODO
return 0;
}
int32_t OsWindowProc(void* window, uint32_t message, uintptr_t wparam, intptr_t lparam) {
// TODO