diff --git a/DiabloUI/_temp_data.cpp b/DiabloUI/_temp_data.cpp index 9caca31ac..2b18f339a 100644 --- a/DiabloUI/_temp_data.cpp +++ b/DiabloUI/_temp_data.cpp @@ -17,6 +17,7 @@ int credits_cpp_float_value = 2139095040; // weak int DiabEdit_cpp_float_value = 2139095040; // weak int DiabloUI_cpp_float_value = 2139095040; // weak int doom_cpp_float_value = 2139095040; // weak +int EntName_cpp_float_value = 2139095040; // weak int fade_cpp_float_value = 2139095040; // weak int focus_cpp_float_value = 2139095040; // weak int local_cpp_float_value = 2139095040; // weak @@ -24,6 +25,7 @@ int mainmenu_cpp_float_value = 2139095040; // weak int OkCancel_cpp_float_value = 2139095040; // weak int Sbar_cpp_float_value = 2139095040; // weak int Sbar_cpp_float_value2 = 2139095040; // weak +int SelClass_cpp_float_value = 2139095040; // weak int SelHero_cpp_float_value = 2139095040; // weak int SelList_cpp_float_value = 2139095040; // weak int SelLoad_cpp_float_value = 2139095040; // weak @@ -38,7 +40,13 @@ ProfFntStruct proffnts[4] = { 10, "Arial", 700 }, { 13, "Time New Roman", 400 } }; -unsigned char connect_some16data[16] = { 13u, 0u, 0u, 0u, 128u, 128u, 128u, 0u, 14u, 0u, 0u, 0u, 255u, 255u, 255u, 0u }; +unsigned char connect_subnet_ip[4][4] = +{ + { 13, 0, 0, 0 }, // 13.0.0.0 + { 128, 128, 128, 0 }, // 128.128.128.0 + { 14, 0, 0, 0 }, // 14.0.0.0 + { 255, 255, 255, 0 } // 255.255.255.0 +}; int creadung_msgtbl1[3] = { 1038, 1080, 0 }; int creadung_msgtbl2[2] = { 1097, 0 }; int creadung_msgtbl3[2] = { 1099, 0 }; @@ -55,9 +63,9 @@ int dword_10022AA4[4] = { 1084, 1085, 1086, 0 }; int dword_10022AFC[2] = { 1038, 0 }; int dword_10022B04[3] = { 1056, 1054, 0 }; int dword_10022B10[2] = { 1116, 0 }; -int dword_10022B34[2] = { 1038, 0 }; -int dword_10022B3C[3] = { 1056, 1054, 0 }; -int dword_10022B48[2] = { 1065, 0 }; +int entname_msgtbl1[2] = { 1038, 0 }; +int entname_msgtbl2[3] = { 1056, 1054, 0 }; +int entname_msgtbl3[2] = { 1065, 0 }; int menumsgs_1option[2] = { 1042, 0 }; int menumsgs_5options[6] = { 1044, 1001, 1002, 1003, 2, 0 }; int dword_10022C4C[2] = { 1038, 0 }; @@ -65,9 +73,9 @@ int dword_10022C54[2] = { 1080, 0 }; int dword_10022C5C[2] = { 1108, 0 }; int dword_10022CAC[2] = { 1026, 0 }; int dword_10022CB4[2] = { 2, 0 }; -int dword_10022EB4[2] = { 1038, 0 }; -int dword_10022EBC[3] = { 1056, 1054, 0 }; -int dword_10022EC8[4] = { 1062, 1063, 1064, 0 }; +int selclass_msgtbl1[2] = { 1038, 0 }; +int selclass_msgtbl2[3] = { 1056, 1054, 0 }; +int selclass_msgtbl3[4] = { 1062, 1063, 1064, 0 }; int dword_10022ED8[3] = { 1038, 1080, 0 }; int dword_10022EE4[3] = { 1143, 1147, 0 }; int dword_10022EF0[4] = { 1081, 1076, 1144, 0 }; @@ -227,8 +235,8 @@ int dword_10029850; // weak int doom_cpp_float; // weak LPSTR dword_10029858; // idb int dword_1002985C; // weak -int dword_10029860; // weak -LPSTR dword_10029864; // idb +int EntName_cpp_float; // weak +char *entname_charname; int fade_cpp_float; // weak int sgbFadeRange; // idb tagPALETTEENTRY fadepal[256]; @@ -242,8 +250,7 @@ int dword_10029CA8; // weak int dword_10029CAC; // weak int sgnSpinnerFrame; // weak int local_cpp_float; // weak -int gdwCursWidth; // weak -int gdwCursHeight; // weak +DWORD gdwCursData[2]; // weak tagPALETTEENTRY artpal[256]; HGDIOBJ objPalette; // idb BYTE *gpCursorArt; @@ -289,7 +296,7 @@ BYTE *dword_1002A324; // idb void *dword_1002A328; // idb int Sbar_cpp_float; // weak int Sbar_cpp_float2; // weak -int dword_1002A348; // weak +int SelClass_cpp_float; // weak int dword_1002A34C; // idb int dword_1002A350; // weak int dword_1002A354; // weak diff --git a/DiabloUI/_temp_funcs.h b/DiabloUI/_temp_funcs.h index 7cc24de27..aa388a554 100644 --- a/DiabloUI/_temp_funcs.h +++ b/DiabloUI/_temp_funcs.h @@ -230,12 +230,13 @@ int __fastcall EntDial_10006F16(HWND hDlg, int, int); // idb signed int EntDial_10006F71(); -LRESULT __stdcall EntName_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); // idb -HWND UNKCALL EntName_1000709E(HWND hDlg); -int UNKCALL EntName_100070DB(HWND hWnd); // idb -int __fastcall EntName_100071AC(HWND hDlg, int a2); -void __fastcall EntName_100071ED(HWND hWnd, unsigned int a2, int a3); -signed int EntName_10007220(); +LRESULT __stdcall EntName_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); +void __fastcall EntName_DelEntNameMsgs(HWND hWnd); +void __fastcall EntName_LoadFocusChkName(HWND hWnd); +void __fastcall EntName_SetCharName(HWND hWnd, int a2); +void __fastcall EntName_GetMessageName(HWND hWnd, unsigned int a2, int a3); +void __cdecl j_EntName_cpp_init(); +void __cdecl EntName_cpp_init(); void __fastcall Fade_ApplyPaletteRange(int range1, int range2); @@ -375,12 +376,13 @@ void __cdecl Sbar_cpp_init2(); void __fastcall Sbar_FreeScrollBar(HWND hWnd, int nIDDlgItem); -LRESULT __stdcall SelClass_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); // idb -HWND UNKCALL SelClass_10009EC0(HWND hDlg); -int UNKCALL SelClass_10009EFD(HWND hWnd); // idb -int __fastcall SelClass_10009FA2(HWND hWnd, int a2); -int __fastcall SelClass_1000A00D(int a1, LONG a2); -signed int SelClass_1000A077(); +LRESULT __stdcall SelClass_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); +void __fastcall SelClass_FreeClassMsgTbl(HWND hWnd); +void __fastcall SelClass_LoadClassFocus(HWND hWnd); +void __fastcall SelClass_SetDefaultStats(HWND hWnd, int a2); +void __fastcall SelClass_CheckClassSpawn(HWND hWnd, int a2); +void __cdecl j_SelClass_cpp_init(); +void __cdecl SelClass_cpp_init(); void *SelConn_1000A082(); diff --git a/DiabloUI/connect.cpp b/DiabloUI/connect.cpp index 1c717fb1a..45f627dce 100644 --- a/DiabloUI/connect.cpp +++ b/DiabloUI/connect.cpp @@ -329,7 +329,7 @@ BOOL __stdcall UiGetDataCallback(int game_type, int data_code, void *a3, int a4, goto LABEL_24; if ( (unsigned int)a4 >= 0x10 ) { - memcpy(a3, connect_some16data, 0x10u); + memcpy(a3, connect_subnet_ip, 0x10u); goto LABEL_24; } return 0; diff --git a/DiabloUI/creadung.cpp b/DiabloUI/creadung.cpp index f407465e9..83a8ff86c 100644 --- a/DiabloUI/creadung.cpp +++ b/DiabloUI/creadung.cpp @@ -46,7 +46,7 @@ LRESULT __stdcall CreaDung_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lP Focus_DoBlitSpinIncFrame(hWnd, (HWND)lParam); CreaDung_ParseDungProcs(hWnd, (unsigned short)wParam); } - else if ( wParam == 327681 ) + else if ( HIWORD(wParam) == 5 || (_WORD)wParam == 1 ) { CreaDung_DoAllPlaySnd(hWnd); } diff --git a/DiabloUI/entname.cpp b/DiabloUI/entname.cpp index 1ab677aa9..64ce32348 100644 --- a/DiabloUI/entname.cpp +++ b/DiabloUI/entname.cpp @@ -1,6 +1,6 @@ // ref: 0x10006F7C -LRESULT __stdcall EntName_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { return 0; } -/* { +LRESULT __stdcall EntName_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) +{ int v4; // edx HWND v5; // eax HWND v6; // eax @@ -10,22 +10,22 @@ LRESULT __stdcall EntName_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lPa v4 = 2; if ( Msg == 2 ) { - EntName_1000709E(hDlg); - return SDlgDefDialogProc(hDlg, Msg, wParam, lParam); + EntName_DelEntNameMsgs(hWnd); + return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); } if ( Msg <= 0x103 ) - return SDlgDefDialogProc(hDlg, Msg, wParam, lParam); + return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); if ( Msg <= 0x105 ) { v9 = (HWND)SDrawGetFrameWindow(); SendMessageA(v9, Msg, wParam, lParam); - return SDlgDefDialogProc(hDlg, Msg, wParam, lParam); + return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); } switch ( Msg ) { case 0x110u: - dword_10029864 = (LPSTR)lParam; - EntName_100070DB(hDlg); + entname_charname = (char *)lParam; + EntName_LoadFocusChkName(hWnd); return 0; case 0x111u: if ( (unsigned short)wParam != 1 ) @@ -33,135 +33,115 @@ LRESULT __stdcall EntName_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lPa if ( (unsigned short)wParam != 2 ) { if ( (unsigned short)wParam == 1065 ) - EntName_100071ED(hDlg, wParam, lParam); - return SDlgDefDialogProc(hDlg, Msg, wParam, lParam); + EntName_GetMessageName(hWnd, wParam, lParam); + return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); } goto LABEL_11; } goto LABEL_18; case 0x113u: v7 = GetFocus(); - Focus_100075DC(hDlg, v7); + Focus_DoBlitSpinIncFrame(hWnd, v7); return 0; } if ( Msg != 513 ) - return SDlgDefDialogProc(hDlg, Msg, wParam, lParam); - v5 = GetDlgItem(hDlg, 1056); - if ( local_10007C3B(hDlg, v5, (unsigned short)lParam, (unsigned int)lParam >> 16) ) + return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); + v5 = GetDlgItem(hWnd, 1056); + if ( local_GetBottomRect(hWnd, v5, (unsigned short)lParam, (unsigned int)lParam >> 16) ) { LABEL_18: v4 = 1; goto LABEL_11; } - v6 = GetDlgItem(hDlg, 1054); - if ( local_10007C3B(hDlg, v6, (unsigned short)lParam, (unsigned int)lParam >> 16) ) + v6 = GetDlgItem(hWnd, 1054); + if ( local_GetBottomRect(hWnd, v6, (unsigned short)lParam, (unsigned int)lParam >> 16) ) { v4 = 2; LABEL_11: - EntName_100071AC(hDlg, v4); + EntName_SetCharName(hWnd, v4); } - return SDlgDefDialogProc(hDlg, Msg, wParam, lParam); -} */ -// 1001037C: using guessed type int __stdcall SDlgDefDialogProc(_DWORD, _DWORD, _DWORD, _DWORD); + return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); +} // 10010382: using guessed type _DWORD __stdcall SDrawGetFrameWindow(); // ref: 0x1000709E -HWND UNKCALL EntName_1000709E(HWND hDlg) { return 0; } -/* { - HWND v1; // esi +void __fastcall EntName_DelEntNameMsgs(HWND hWnd) +{ HWND v2; // eax - v1 = hDlg; - Focus_100076C3(); - Doom_10006C53(v1, (int *)&unk_10022B48); - Doom_10006C53(v1, (int *)&unk_10022B3C); - Doom_10006C53(v1, (int *)&unk_10022B34); - v2 = GetParent(v1); - return SelHero_1000BA7B(v2, 0); -} */ + Focus_DeleteSpinners(); + Doom_DeleteFreeProcs(hWnd, entname_msgtbl3); + Doom_DeleteFreeProcs(hWnd, entname_msgtbl2); + Doom_DeleteFreeProcs(hWnd, entname_msgtbl1); + v2 = GetParent(hWnd); + SelHero_SetStringWithMsg(v2, 0); +} // ref: 0x100070DB -int UNKCALL EntName_100070DB(HWND hWnd) { return 0; } -/* { - HWND v1; // esi +void __fastcall EntName_LoadFocusChkName(HWND hWnd) +{ HWND v2; // edi LONG v3; // eax HWND v4; // ebx - int result; // eax - CHAR Buffer; // [esp+Ch] [ebp-20h] + char Buffer[32]; // [esp+Ch] [ebp-20h] - v1 = hWnd; v2 = GetParent(hWnd); - if ( SelHero_1000B7CA() == 1 ) - LoadStringA(hInstance, 0x20u, &Buffer, 31); + if ( SelHero_GetHeroIsGood() == 1 ) + LoadStringA(ghUiInst, 0x20u, Buffer, 31); else - LoadStringA(hInstance, 0x1Fu, &Buffer, 31); - SelHero_1000BA7B(v2, &Buffer); + LoadStringA(ghUiInst, 0x1Fu, Buffer, 31); + SelHero_SetStringWithMsg(v2, Buffer); v3 = GetWindowLongA(v2, -21); - SetWindowLongA(v1, -21, v3); - Doom_100068AB(v1, (int *)&unk_10022B34, 5); - Doom_1000658C(v1, (int *)&unk_10022B3C, 4, 0); - Doom_10006AB8(v1, (int *)&unk_10022B48, 2); - Focus_10007719("ui_art\\focus.pcx"); - SDlgSetTimer(v1, 1, 55, 0); - v4 = GetDlgItem(v1, 1065); + SetWindowLongA(hWnd, -21, v3); + Doom_ParseWndProc3(hWnd, entname_msgtbl1, 5); + Doom_ParseWndProcs(hWnd, entname_msgtbl2, 4, 0); + Doom_ParseWndProc5(hWnd, entname_msgtbl3, 2); + Focus_LoadSpinner("ui_art\\focus.pcx"); + SDlgSetTimer((int)hWnd, 1, 55, 0); + v4 = GetDlgItem(hWnd, 1065); SendMessageA(v4, 0x401u, 0xFu, 0); - result = SelHero_1000B7CA(); - if ( result == 1 ) - result = SendMessageA(v4, 0x404u, 0, (LPARAM)" ,<>%&\\\"?*#/"); - return result; -} */ -// 10010412: using guessed type int __stdcall SDlgSetTimer(_DWORD, _DWORD, _DWORD, _DWORD); + if ( SelHero_GetHeroIsGood() == 1 ) + SendMessageA(v4, 0x404u, 0, (LPARAM)" ,<>%&\\\"?*#/"); +} // ref: 0x100071AC -int __fastcall EntName_100071AC(HWND hDlg, int a2) { return 0; } -/* { - int v2; // edi - HWND v3; // esi - CHAR *v4; // ST08_4 +void __fastcall EntName_SetCharName(HWND hWnd, int a2) +{ + char *v4; // ST08_4 HWND v5; // eax - v2 = a2; - v3 = hDlg; - TitleSnd_1001031F(); - SDlgKillTimer(v3, 1); - v4 = dword_10029864; - v5 = GetDlgItem(v3, 1065); + TitleSnd_PlaySelectSound(); + SDlgKillTimer((int)hWnd, 1); + v4 = entname_charname; + v5 = GetDlgItem(hWnd, 1065); GetWindowTextA(v5, v4, 16); - dword_10029864[15] = 0; - return SDlgEndDialog(v3, v2); -} */ -// 10010376: using guessed type int __stdcall SDlgEndDialog(_DWORD, _DWORD); -// 10010418: using guessed type int __stdcall SDlgKillTimer(_DWORD, _DWORD); + entname_charname[15] = 0; + SDlgEndDialog(hWnd, (HANDLE)a2); +} // ref: 0x100071ED -void __fastcall EntName_100071ED(HWND hWnd, unsigned int a2, int a3) { return; } -/* { - int v3; // edx - HWND v4; // esi +void __fastcall EntName_GetMessageName(HWND hWnd, unsigned int a2, int a3) +{ + unsigned int v3; // edx HWND v5; // eax v3 = (a2 >> 16) - 1; - v4 = hWnd; if ( v3 ) { if ( v3 == 2 ) - Doom_10006C08(hWnd, (int *)&unk_10022B48, 2); + Doom_ParseWndProc6(hWnd, entname_msgtbl3, 2); } else { v5 = GetFocus(); - Focus_100075DC(v4, v5); + Focus_DoBlitSpinIncFrame(hWnd, v5); } -} */ +} // ref: 0x10007220 -signed int EntName_10007220() { return 0; } -/* { - signed int result; // eax - - result = 2139095040; - dword_10029860 = 2139095040; - return result; -} */ -// 10029860: using guessed type int dword_10029860; +void __cdecl EntName_cpp_init() +{ + EntName_cpp_float = EntName_cpp_float_value; +} +// 1001F424: using guessed type int EntName_cpp_float_value; +// 10029860: using guessed type int EntName_cpp_float; diff --git a/DiabloUI/local.cpp b/DiabloUI/local.cpp index 38f746e43..f7cf21262 100644 --- a/DiabloUI/local.cpp +++ b/DiabloUI/local.cpp @@ -492,14 +492,12 @@ void __cdecl local_LoadArtCursor() gpCursorArt2 = (BYTE *)SMemAlloc(dwHeight * dwWidth, "C:\\Src\\Diablo\\DiabloUI\\local.cpp", 554, 0); if ( SBmpLoadImage("ui_art\\cursor.pcx", 0, gpCursorArt, dwHeight * dwWidth, 0, 0, 0) ) { - gdwCursWidth = dwWidth; - gdwCursHeight = dwHeight; + gdwCursData[0] = dwWidth; + gdwCursData[1] = dwHeight; local_InitArtCursor(); } } } -// 10029CC0: using guessed type int gdwCursWidth; -// 10029CC4: using guessed type int gdwCursHeight; // ref: 0x10008062 void __cdecl local_InitArtCursor() @@ -515,7 +513,7 @@ void __cdecl local_InitArtCursor() { if ( gpCursorArt ) { - for ( i = 0; i < gdwCursWidth * gdwCursHeight; ++i ) + for ( i = 0; i < gdwCursData[0] * gdwCursData[1]; ++i ) { v3 = *v1++; if ( v3 ) @@ -527,8 +525,6 @@ void __cdecl local_InitArtCursor() } } } -// 10029CC0: using guessed type int gdwCursWidth; -// 10029CC4: using guessed type int gdwCursHeight; // ref: 0x100080AD void __cdecl local_FreeArtCursor() @@ -550,10 +546,9 @@ void __cdecl local_SetCursorArt() { if ( !gpCursorArt ) local_LoadArtCursor(); - SDlgSetSystemCursor(gpCursorArt2, gpCursorArt, &gdwCursWidth, 32512); + SDlgSetSystemCursor(gpCursorArt2, gpCursorArt, (int *)gdwCursData, 32512); } // 1001044E: using guessed type int __stdcall SDlgSetSystemCursor(_DWORD, _DWORD, _DWORD, _DWORD); -// 10029CC0: using guessed type int gdwCursWidth; // ref: 0x1000811B void __cdecl local_SetCursorDefault() diff --git a/DiabloUI/selclass.cpp b/DiabloUI/selclass.cpp index 265b66e06..da3d2ced9 100644 --- a/DiabloUI/selclass.cpp +++ b/DiabloUI/selclass.cpp @@ -1,28 +1,28 @@ // ref: 0x10009D66 -LRESULT __stdcall SelClass_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { return 0; } -/* { +LRESULT __stdcall SelClass_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) +{ HWND v4; // eax - LONG v5; // edx + int v5; // edx HWND v6; // eax HWND v7; // eax HWND v9; // eax if ( Msg == 2 ) { - SelClass_10009EC0(hDlg); - return SDlgDefDialogProc(hDlg, Msg, wParam, lParam); + SelClass_FreeClassMsgTbl(hWnd); + return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); } if ( Msg <= 0x103 ) - return SDlgDefDialogProc(hDlg, Msg, wParam, lParam); + return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); if ( Msg <= 0x105 ) { v9 = (HWND)SDrawGetFrameWindow(); SendMessageA(v9, Msg, wParam, lParam); - return SDlgDefDialogProc(hDlg, Msg, wParam, lParam); + return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); } if ( Msg == 272 ) { - SelClass_10009EFD(hDlg); + SelClass_LoadClassFocus(hWnd); return 0; } if ( Msg != 273 ) @@ -31,163 +31,137 @@ LRESULT __stdcall SelClass_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lP { if ( Msg == 513 ) { - v4 = GetDlgItem(hDlg, 1056); - if ( local_10007C3B(hDlg, v4, (unsigned short)lParam, (unsigned int)lParam >> 16) ) + v4 = GetDlgItem(hWnd, 1056); + if ( local_GetBottomRect(hWnd, v4, (unsigned short)lParam, (unsigned int)lParam >> 16) ) { v5 = 1; LABEL_19: - SelClass_1000A00D((int)hDlg, v5); - return SDlgDefDialogProc(hDlg, Msg, wParam, lParam); + SelClass_CheckClassSpawn(hWnd, v5); + return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); } - v6 = GetDlgItem(hDlg, 1054); - if ( local_10007C3B(hDlg, v6, (unsigned short)lParam, (unsigned int)lParam >> 16) ) + v6 = GetDlgItem(hWnd, 1054); + if ( local_GetBottomRect(hWnd, v6, (unsigned short)lParam, (unsigned int)lParam >> 16) ) { LABEL_21: v5 = 2; goto LABEL_19; } } - return SDlgDefDialogProc(hDlg, Msg, wParam, lParam); + return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); } v7 = GetFocus(); - Focus_100075DC(hDlg, v7); + Focus_DoBlitSpinIncFrame(hWnd, v7); return 0; } if ( HIWORD(wParam) == 7 ) { - Focus_100075B7(hDlg, (HWND)lParam); + Focus_GetAndBlitSpin(hWnd, lParam); } else { if ( HIWORD(wParam) != 6 ) { v5 = 1; - if ( wParam == 327681 ) + if ( HIWORD(wParam) == 5 || (_WORD)wParam == 1 ) goto LABEL_19; if ( (_WORD)wParam != 2 ) - return SDlgDefDialogProc(hDlg, Msg, wParam, lParam); + return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); goto LABEL_21; } - Focus_10007458((void *)lParam); - Focus_100075DC(hDlg, (HWND)lParam); - SelClass_10009FA2(hDlg, (unsigned short)wParam); + Focus_CheckPlayMove(lParam); + Focus_DoBlitSpinIncFrame(hWnd, (HWND)lParam); + SelClass_SetDefaultStats(hWnd, (unsigned short)wParam); } - return SDlgDefDialogProc(hDlg, Msg, wParam, lParam); -} */ -// 1001037C: using guessed type int __stdcall SDlgDefDialogProc(_DWORD, _DWORD, _DWORD, _DWORD); + return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); +} // 10010382: using guessed type _DWORD __stdcall SDrawGetFrameWindow(); // ref: 0x10009EC0 -HWND UNKCALL SelClass_10009EC0(HWND hDlg) { return 0; } -/* { - HWND v1; // esi +void __fastcall SelClass_FreeClassMsgTbl(HWND hWnd) +{ HWND v2; // eax - v1 = hDlg; - Focus_100076C3(); - Doom_10006C53(v1, (int *)&unk_10022EC8); - Doom_10006C53(v1, (int *)&unk_10022EBC); - Doom_10006C53(v1, (int *)&unk_10022EB4); - v2 = GetParent(v1); - return SelHero_1000BA7B(v2, 0); -} */ + Focus_DeleteSpinners(); + Doom_DeleteFreeProcs(hWnd, selclass_msgtbl3); + Doom_DeleteFreeProcs(hWnd, selclass_msgtbl2); + Doom_DeleteFreeProcs(hWnd, selclass_msgtbl1); + v2 = GetParent(hWnd); + SelHero_SetStringWithMsg(v2, 0); +} // ref: 0x10009EFD -int UNKCALL SelClass_10009EFD(HWND hWnd) { return 0; } -/* { +void __fastcall SelClass_LoadClassFocus(HWND hWnd) +{ HWND v1; // edi HWND v2; // esi LONG v3; // eax - CHAR Buffer; // [esp+8h] [ebp-20h] + char Buffer[32]; // [esp+8h] [ebp-20h] v1 = hWnd; v2 = GetParent(hWnd); - if ( SelHero_1000B7CA() == 1 ) - LoadStringA(hInstance, 0x20u, &Buffer, 31); + if ( SelHero_GetHeroIsGood() == 1 ) + LoadStringA(ghUiInst, 0x20u, Buffer, 31); else - LoadStringA(hInstance, 0x1Fu, &Buffer, 31); - SelHero_1000BA7B(v2, &Buffer); + LoadStringA(ghUiInst, 0x1Fu, Buffer, 31); + SelHero_SetStringWithMsg(v2, Buffer); v3 = GetWindowLongA(v2, -21); SetWindowLongA(v1, -21, v3); - local_10007CB5(v1, (int *)&unk_10022EC8); - Doom_100068AB(v1, (int *)&unk_10022EB4, 5); - Doom_1000658C(v1, (int *)&unk_10022EBC, 4, 0); - Doom_1000658C(v1, (int *)&unk_10022EC8, 2, 1); - Focus_10007719("ui_art\\focus.pcx"); - return SDlgSetTimer(v1, 1, 55, 0); -} */ -// 10010412: using guessed type int __stdcall SDlgSetTimer(_DWORD, _DWORD, _DWORD, _DWORD); + local_DoUiWndProc(v1, (DWORD *)selclass_msgtbl3); + Doom_ParseWndProc3(v1, selclass_msgtbl1, 5); + Doom_ParseWndProcs(v1, selclass_msgtbl2, 4, 0); + Doom_ParseWndProcs(v1, selclass_msgtbl3, 2, 1); + Focus_LoadSpinner("ui_art\\focus.pcx"); + SDlgSetTimer((int)v1, 1, 55, 0); +} // ref: 0x10009FA2 -int __fastcall SelClass_10009FA2(HWND hWnd, int a2) { return 0; } -/* { +void __fastcall SelClass_SetDefaultStats(HWND hWnd, int a2) +{ char v2; // bl - HWND v3; // esi HWND v4; // eax - char v6; // [esp+8h] [ebp-34h] - short v7; // [esp+1Ch] [ebp-20h] - char v8; // [esp+1Eh] [ebp-1Eh] - short v9; // [esp+20h] [ebp-1Ch] - short v10; // [esp+22h] [ebp-1Ah] - short v11; // [esp+24h] [ebp-18h] - short v12; // [esp+26h] [ebp-16h] - short v13; // [esp+34h] [ebp-8h] - short v14; // [esp+36h] [ebp-6h] - short v15; // [esp+38h] [ebp-4h] - short v16; // [esp+3Ah] [ebp-2h] + _uiheroinfo pInfo; // [esp+8h] [ebp-34h] + _uidefaultstats a2a; // [esp+34h] [ebp-8h] v2 = a2; - v3 = hWnd; - SelHero_1000B7D0(a2 - 1062, (int)&v13); - memset(&v6, 0, 0x2Cu); - v9 = v13; - v10 = v14; - v11 = v15; - v7 = 1; - v8 = v2 - 38; - v12 = v16; - v4 = GetParent(v3); - return SelHero_1000B905(v4, (int)&v6); -} */ + SelHero_SetClassStats(a2 - 1062, &a2a); + memset(&pInfo, 0, 0x2Cu); + pInfo.strength = a2a.strength; + pInfo.magic = a2a.magic; + pInfo.dexterity = a2a.dexterity; + pInfo.vitality = a2a.vitality; + pInfo.level = 1; + pInfo.heroclass = v2 - 38; + v4 = GetParent(hWnd); + SelHero_PrintHeroInfo(v4, &pInfo); +} // ref: 0x1000A00D -int __fastcall SelClass_1000A00D(int a1, LONG a2) { return 0; } -/* { - LONG v2; // esi - int v3; // ebp +void __fastcall SelClass_CheckClassSpawn(HWND hWnd, int a2) +{ HWND v4; // eax - HWND v6; // eax + HWND v5; // eax - v2 = a2; - v3 = a1; - if ( DiabloUI_10005C2A() ) + if ( DiabloUI_GetSpawned() && a2 == 1 && (v4 = GetFocus(), GetWindowLongA(v4, -12) != 1062) ) { - if ( v2 == 1 ) - { - v4 = GetFocus(); - if ( GetWindowLongA(v4, -12) != 1062 ) - return SelYesNo_1000FD77(v3, 0x45u, 0); - } + SelYesNo_SpawnErrDialog(hWnd, 69, 0); } - TitleSnd_1001031F(); - SDlgKillTimer(v3, 1); - if ( v2 == 1 ) + else { - v6 = GetFocus(); - v2 = GetWindowLongA(v6, -12); + TitleSnd_PlaySelectSound(); + SDlgKillTimer((int)hWnd, 1); + if ( a2 == 1 ) + { + v5 = GetFocus(); + a2 = GetWindowLongA(v5, -12); + } + SDlgEndDialog(hWnd, (HANDLE)a2); } - return SDlgEndDialog(v3, v2); -} */ -// 10010376: using guessed type int __stdcall SDlgEndDialog(_DWORD, _DWORD); -// 10010418: using guessed type int __stdcall SDlgKillTimer(_DWORD, _DWORD); +} // ref: 0x1000A077 -signed int SelClass_1000A077() { return 0; } -/* { - signed int result; // eax - - result = 2139095040; - dword_1002A348 = 2139095040; - return result; -} */ -// 1002A348: using guessed type int dword_1002A348; +void __cdecl SelClass_cpp_init() +{ + SelClass_cpp_float = SelClass_cpp_float_value; +} +// 1001F450: using guessed type int SelClass_cpp_float_value; +// 1002A348: using guessed type int SelClass_cpp_float; diff --git a/DiabloUI/sellist.cpp b/DiabloUI/sellist.cpp index ecd63960d..75c8e17dc 100644 --- a/DiabloUI/sellist.cpp +++ b/DiabloUI/sellist.cpp @@ -49,7 +49,7 @@ LRESULT __stdcall SelList_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lPa if ( HIWORD(wParam) != 6 ) { v6 = 1; - if ( wParam != 327681 ) + if ( HIWORD(wParam) != 5 && (_WORD)wParam != 1 ) { v6 = 2; if ( (_WORD)wParam != 2 ) diff --git a/DiabloUI/selload.cpp b/DiabloUI/selload.cpp index 0dc844355..952909e61 100644 --- a/DiabloUI/selload.cpp +++ b/DiabloUI/selload.cpp @@ -62,7 +62,7 @@ LABEL_21: if ( HIWORD(wParam) != 6 ) { v5 = 1; - if ( wParam == 327681 ) + if ( HIWORD(wParam) == 5 || (_WORD)wParam == 1 ) goto LABEL_19; if ( (_WORD)wParam != 2 ) return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam);