|
|
|
|
@ -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;
|
|
|
|
|
|