Browse Source

Fix bugs in DiabloUI

pull/4/head
galaxyhaxz 8 years ago
parent
commit
1d27aab18c
  1. 31
      DiabloUI/_temp_data.cpp
  2. 26
      DiabloUI/_temp_funcs.h
  3. 2
      DiabloUI/connect.cpp
  4. 2
      DiabloUI/creadung.cpp
  5. 154
      DiabloUI/entname.cpp
  6. 13
      DiabloUI/local.cpp
  7. 192
      DiabloUI/selclass.cpp
  8. 2
      DiabloUI/sellist.cpp
  9. 2
      DiabloUI/selload.cpp

31
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

26
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();

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

2
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);
}

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

13
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()

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

2
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 )

2
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);

Loading…
Cancel
Save