mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-18 05:51:15 +00:00
match WinProc
This commit is contained in:
parent
579ee84049
commit
0e73b85f33
124
ISLE/main.cpp
124
ISLE/main.cpp
@ -141,6 +141,9 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||||||
// OFFSET: ISLE 0x401d20
|
// OFFSET: ISLE 0x401d20
|
||||||
LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
|
NotificationId type;
|
||||||
|
unsigned char keyCode = 0;
|
||||||
|
|
||||||
if (!g_isle) {
|
if (!g_isle) {
|
||||||
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
@ -235,77 +238,64 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
}
|
}
|
||||||
return DefWindowProcA(hWnd, WM_DISPLAYCHANGE, wParam, lParam);
|
return DefWindowProcA(hWnd, WM_DISPLAYCHANGE, wParam, lParam);
|
||||||
case WM_SETCURSOR:
|
case WM_SETCURSOR:
|
||||||
case WM_KEYDOWN:
|
if (g_isle) {
|
||||||
case WM_MOUSEMOVE:
|
HCURSOR hCursor = g_isle->m_cursorCurrent;
|
||||||
case WM_TIMER:
|
if (hCursor == g_isle->m_cursorBusy || hCursor == g_isle->m_cursorNo || !hCursor) {
|
||||||
case WM_LBUTTONDOWN:
|
SetCursor(hCursor);
|
||||||
case WM_LBUTTONUP:
|
|
||||||
case 0x5400:
|
|
||||||
{
|
|
||||||
|
|
||||||
NotificationId type = NONE;
|
|
||||||
unsigned char keyCode = 0;
|
|
||||||
|
|
||||||
switch (uMsg) {
|
|
||||||
case WM_KEYDOWN:
|
|
||||||
// While this probably should be (HIWORD(lParam) & KF_REPEAT), this seems
|
|
||||||
// to be what the assembly is actually doing
|
|
||||||
if (lParam & (KF_REPEAT << 16)) {
|
|
||||||
return DefWindowProcA(hWnd, WM_KEYDOWN, wParam, lParam);
|
|
||||||
}
|
|
||||||
keyCode = wParam;
|
|
||||||
type = KEYDOWN;
|
|
||||||
break;
|
|
||||||
case WM_MOUSEMOVE:
|
|
||||||
g_mousemoved = 1;
|
|
||||||
type = MOUSEMOVE;
|
|
||||||
break;
|
|
||||||
case WM_TIMER:
|
|
||||||
type = TIMER;
|
|
||||||
break;
|
|
||||||
case WM_SETCURSOR:
|
|
||||||
if (g_isle) {
|
|
||||||
HCURSOR hCursor = g_isle->m_cursorCurrent;
|
|
||||||
if (hCursor == g_isle->m_cursorBusy || hCursor == g_isle->m_cursorNo || !hCursor) {
|
|
||||||
SetCursor(hCursor);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case WM_LBUTTONDOWN:
|
|
||||||
g_mousedown = 1;
|
|
||||||
type = MOUSEDOWN;
|
|
||||||
break;
|
|
||||||
case WM_LBUTTONUP:
|
|
||||||
g_mousedown = 0;
|
|
||||||
type = MOUSEUP;
|
|
||||||
break;
|
|
||||||
case 0x5400:
|
|
||||||
if (g_isle) {
|
|
||||||
g_isle->SetupCursor(wParam);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
if (g_isle) {
|
case WM_KEYDOWN:
|
||||||
if (InputManager()) {
|
// While this probably should be (HIWORD(lParam) & KF_REPEAT), this seems
|
||||||
InputManager()->QueueEvent(type, wParam, LOWORD(lParam), HIWORD(lParam), keyCode);
|
// to be what the assembly is actually doing
|
||||||
}
|
if (lParam & (KF_REPEAT << 16)) {
|
||||||
if (g_isle && g_isle->m_drawCursor && type == MOUSEMOVE) {
|
return DefWindowProcA(hWnd, WM_KEYDOWN, wParam, lParam);
|
||||||
unsigned short x = LOWORD(lParam);
|
|
||||||
unsigned short y = HIWORD(lParam);
|
|
||||||
if (639 < x) {
|
|
||||||
x = 639;
|
|
||||||
}
|
|
||||||
if (479 < y) {
|
|
||||||
y = 479;
|
|
||||||
}
|
|
||||||
VideoManager()->MoveCursor(x,y);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return 0;
|
keyCode = wParam;
|
||||||
}
|
type = KEYDOWN;
|
||||||
|
break;
|
||||||
|
case WM_MOUSEMOVE:
|
||||||
|
g_mousemoved = 1;
|
||||||
|
type = MOUSEMOVE;
|
||||||
|
break;
|
||||||
|
case WM_TIMER:
|
||||||
|
type = TIMER;
|
||||||
|
break;
|
||||||
|
case WM_LBUTTONDOWN:
|
||||||
|
g_mousedown = 1;
|
||||||
|
type = MOUSEDOWN;
|
||||||
|
break;
|
||||||
|
case WM_LBUTTONUP:
|
||||||
|
g_mousedown = 0;
|
||||||
|
type = MOUSEUP;
|
||||||
|
break;
|
||||||
|
case 0x5400:
|
||||||
|
if (g_isle) {
|
||||||
|
g_isle->SetupCursor(wParam);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return DefWindowProcA(hWnd,uMsg,wParam,lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
return DefWindowProcA(hWnd,uMsg,wParam,lParam);
|
if (g_isle) {
|
||||||
|
if (InputManager()) {
|
||||||
|
InputManager()->QueueEvent(type, wParam, LOWORD(lParam), HIWORD(lParam), keyCode);
|
||||||
|
}
|
||||||
|
if (g_isle && g_isle->m_drawCursor && type == MOUSEMOVE) {
|
||||||
|
unsigned int x = LOWORD(lParam);
|
||||||
|
unsigned int y = HIWORD(lParam);
|
||||||
|
if (639 < x) {
|
||||||
|
x = 639;
|
||||||
|
}
|
||||||
|
if (479 < y) {
|
||||||
|
y = 479;
|
||||||
|
}
|
||||||
|
VideoManager()->MoveCursor(x,y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user