|
|
|
|
// ref: 0x1000B7A0
|
|
|
|
|
int SelHero_1000B7A0() { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
return dword_1002A458;
|
|
|
|
|
} */
|
|
|
|
|
// 1002A458: using guessed type int dword_1002A458;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000B7A6
|
|
|
|
|
int SelHero_1000B7A6() { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
return dword_1002A428;
|
|
|
|
|
} */
|
|
|
|
|
// 1002A428: using guessed type int dword_1002A428;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000B7AC
|
|
|
|
|
void UNKCALL SelHero_1000B7AC(void *arg) { return; }
|
|
|
|
|
/* {
|
|
|
|
|
dword_1002A420 = (int)arg;
|
|
|
|
|
} */
|
|
|
|
|
// 1002A420: using guessed type int dword_1002A420;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000B7B3
|
|
|
|
|
char *SelHero_1000B7B3() { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
return &byte_1002A440;
|
|
|
|
|
} */
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000B7B9
|
|
|
|
|
void *SelHero_1000B7B9() { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
return SMemAlloc(44, "C:\\Src\\Diablo\\DiabloUI\\SelHero.cpp", 123, 0);
|
|
|
|
|
} */
|
|
|
|
|
// 10010364: using guessed type int __stdcall SMemAlloc(_DWORD, _DWORD, _DWORD, _DWORD);
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000B7CA
|
|
|
|
|
int SelHero_1000B7CA() { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
return dword_1002A48C;
|
|
|
|
|
} */
|
|
|
|
|
// 1002A48C: using guessed type int dword_1002A48C;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000B7D0
|
|
|
|
|
int __fastcall SelHero_1000B7D0(int a1, int a2) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
return dword_1002A410(a1, a2);
|
|
|
|
|
} */
|
|
|
|
|
// 1002A410: using guessed type int (__stdcall *dword_1002A410)(_DWORD, _DWORD);
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000B7DE
|
|
|
|
|
signed int SelHero_1000B7DE() { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
signed int result; // eax
|
|
|
|
|
|
|
|
|
|
result = 2139095040;
|
|
|
|
|
dword_1002A414 = 2139095040;
|
|
|
|
|
return result;
|
|
|
|
|
} */
|
|
|
|
|
// 1002A414: using guessed type int dword_1002A414;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000B899
|
|
|
|
|
int __fastcall SelHero_1000B899(HWND hDlg, int a2) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
int v2; // ebx
|
|
|
|
|
HWND v3; // esi
|
|
|
|
|
struct tagRECT Rect; // [esp+8h] [ebp-10h]
|
|
|
|
|
|
|
|
|
|
v2 = a2;
|
|
|
|
|
v3 = GetDlgItem(hDlg, 1040);
|
|
|
|
|
InvalidateRect(v3, 0, 0);
|
|
|
|
|
GetClientRect(v3, &Rect);
|
|
|
|
|
local_10007A68(&Rect, 0, v2 * Rect.bottom);
|
|
|
|
|
return SDlgSetBitmapI(v3, 0, "Static", -1, 1, dword_1002A498, &Rect, dword_1002A418, dword_1002A41C, -1);
|
|
|
|
|
} */
|
|
|
|
|
// 10010400: using guessed type int __stdcall SDlgSetBitmapI(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
|
|
|
|
|
// 1002A418: using guessed type int dword_1002A418;
|
|
|
|
|
// 1002A41C: using guessed type int dword_1002A41C;
|
|
|
|
|
// 1002A498: using guessed type int dword_1002A498;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000B905
|
|
|
|
|
int __fastcall SelHero_1000B905(HWND hDlg, int a2) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
HWND v2; // ebp
|
|
|
|
|
HWND v3; // eax
|
|
|
|
|
int v4; // eax
|
|
|
|
|
HWND v5; // eax
|
|
|
|
|
int v6; // eax
|
|
|
|
|
HWND v7; // eax
|
|
|
|
|
int v8; // eax
|
|
|
|
|
HWND v9; // eax
|
|
|
|
|
int v10; // eax
|
|
|
|
|
HWND v11; // eax
|
|
|
|
|
int v12; // eax
|
|
|
|
|
int result; // eax
|
|
|
|
|
int v14; // esi
|
|
|
|
|
HWND v15; // edi
|
|
|
|
|
HWND v16; // ebp
|
|
|
|
|
int v17; // eax
|
|
|
|
|
HWND hWnd; // ST1C_4
|
|
|
|
|
int v19; // eax
|
|
|
|
|
HWND v20; // ST1C_4
|
|
|
|
|
int v21; // eax
|
|
|
|
|
HWND v22; // ST1C_4
|
|
|
|
|
int v23; // eax
|
|
|
|
|
HWND v24; // ST1C_4
|
|
|
|
|
int v25; // eax
|
|
|
|
|
HWND hDlga; // [esp+Ch] [ebp-4h]
|
|
|
|
|
|
|
|
|
|
v14 = a2;
|
|
|
|
|
v15 = hDlg;
|
|
|
|
|
hDlga = hDlg;
|
|
|
|
|
if ( *(_WORD *)(a2 + 20) )
|
|
|
|
|
{
|
|
|
|
|
dword_1002A424 = *(_DWORD *)(a2 + 36);
|
|
|
|
|
strcpy(&byte_1002A440, (const char *)(a2 + 4));
|
|
|
|
|
v16 = GetDlgItem(v15, 1014);
|
|
|
|
|
wsprintfA(byte_1002A42C, "%d", *(unsigned short *)(v14 + 20));
|
|
|
|
|
v17 = GetWindowLongA(v16, -21);
|
|
|
|
|
local_10007FA4(v17, byte_1002A42C);
|
|
|
|
|
hWnd = GetDlgItem(hDlga, 1018);
|
|
|
|
|
wsprintfA(byte_1002A490, "%d", *(unsigned short *)(v14 + 24));
|
|
|
|
|
v19 = GetWindowLongA(hWnd, -21);
|
|
|
|
|
local_10007FA4(v19, byte_1002A490);
|
|
|
|
|
v20 = GetDlgItem(hDlga, 1017);
|
|
|
|
|
wsprintfA(byte_1002A43C, "%d", *(unsigned short *)(v14 + 26));
|
|
|
|
|
v21 = GetWindowLongA(v20, -21);
|
|
|
|
|
local_10007FA4(v21, byte_1002A43C);
|
|
|
|
|
v22 = GetDlgItem(hDlga, 1016);
|
|
|
|
|
wsprintfA(byte_1002A454, "%d", *(unsigned short *)(v14 + 28));
|
|
|
|
|
v23 = GetWindowLongA(v22, -21);
|
|
|
|
|
local_10007FA4(v23, byte_1002A454);
|
|
|
|
|
v24 = GetDlgItem(hDlga, 1015);
|
|
|
|
|
wsprintfA(byte_1002A494, "%d", *(unsigned short *)(v14 + 30));
|
|
|
|
|
v25 = GetWindowLongA(v24, -21);
|
|
|
|
|
local_10007FA4(v25, byte_1002A494);
|
|
|
|
|
SelHero_1000B899(hDlga, *(unsigned char *)(v14 + 22));
|
|
|
|
|
result = Doom_10006A13(hDlga, (int *)&unk_10023020, 1);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
dword_1002A424 = 0;
|
|
|
|
|
byte_1002A440 = 0;
|
|
|
|
|
v2 = hDlg;
|
|
|
|
|
v3 = GetDlgItem(hDlg, 1014);
|
|
|
|
|
v4 = GetWindowLongA(v3, -21);
|
|
|
|
|
local_10007FA4(v4, "--");
|
|
|
|
|
v5 = GetDlgItem(v2, 1018);
|
|
|
|
|
v6 = GetWindowLongA(v5, -21);
|
|
|
|
|
local_10007FA4(v6, "--");
|
|
|
|
|
v7 = GetDlgItem(v2, 1017);
|
|
|
|
|
v8 = GetWindowLongA(v7, -21);
|
|
|
|
|
local_10007FA4(v8, "--");
|
|
|
|
|
v9 = GetDlgItem(v2, 1016);
|
|
|
|
|
v10 = GetWindowLongA(v9, -21);
|
|
|
|
|
local_10007FA4(v10, "--");
|
|
|
|
|
v11 = GetDlgItem(v2, 1015);
|
|
|
|
|
v12 = GetWindowLongA(v11, -21);
|
|
|
|
|
local_10007FA4(v12, "--");
|
|
|
|
|
SelHero_1000B899(v2, 3);
|
|
|
|
|
result = Doom_10006A13(v2, (int *)&unk_10023020, 1);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
} */
|
|
|
|
|
// 1002A424: using guessed type int dword_1002A424;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000BA7B
|
|
|
|
|
HWND __fastcall SelHero_1000BA7B(HWND hDlg, const char *a2) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
HWND v2; // esi
|
|
|
|
|
const char *v3; // edi
|
|
|
|
|
HWND result; // eax
|
|
|
|
|
int v5; // eax
|
|
|
|
|
|
|
|
|
|
v2 = hDlg;
|
|
|
|
|
v3 = a2;
|
|
|
|
|
result = GetDlgItem(hDlg, 1038);
|
|
|
|
|
if ( result )
|
|
|
|
|
{
|
|
|
|
|
v5 = GetWindowLongA(result, -21);
|
|
|
|
|
local_10007FA4(v5, v3);
|
|
|
|
|
result = (HWND)Doom_10006A13(v2, (int *)&unk_10023000, 5);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
} */
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000BAB4
|
|
|
|
|
char *UNKCALL SelHero_1000BAB4(char *arg) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
UINT v1; // esi
|
|
|
|
|
char *result; // eax
|
|
|
|
|
CHAR SrcStr; // [esp+4h] [ebp-90h]
|
|
|
|
|
CHAR Buffer; // [esp+84h] [ebp-10h]
|
|
|
|
|
|
|
|
|
|
strcpy(&SrcStr, arg);
|
|
|
|
|
_strlwr(&SrcStr);
|
|
|
|
|
v1 = 19;
|
|
|
|
|
while ( 1 )
|
|
|
|
|
{
|
|
|
|
|
LoadStringA(hInstance, v1, &Buffer, 15);
|
|
|
|
|
SelHero_1000BB26(&Buffer);
|
|
|
|
|
_strlwr(&Buffer);
|
|
|
|
|
result = strstr(&SrcStr, &Buffer);
|
|
|
|
|
if ( result )
|
|
|
|
|
break;
|
|
|
|
|
if ( (signed int)++v1 > 26 )
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
return (char *)1;
|
|
|
|
|
} */
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000BB26
|
|
|
|
|
char __fastcall SelHero_1000BB26(char *a1) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
char result; // al
|
|
|
|
|
|
|
|
|
|
while ( 1 )
|
|
|
|
|
{
|
|
|
|
|
result = *a1;
|
|
|
|
|
if ( !*a1 )
|
|
|
|
|
break;
|
|
|
|
|
*a1++ = result - 1;
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
} */
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000BB34
|
|
|
|
|
int __fastcall SelHero_1000BB34(char *a1, char *a2) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
char *v2; // esi
|
|
|
|
|
char *v3; // edi
|
|
|
|
|
char v5; // al
|
|
|
|
|
|
|
|
|
|
v2 = a1;
|
|
|
|
|
v3 = a2;
|
|
|
|
|
if ( strpbrk(a1, ",<>%&\\\"?*#/:") || strpbrk(v2, v3) )
|
|
|
|
|
return 1;
|
|
|
|
|
while ( 1 )
|
|
|
|
|
{
|
|
|
|
|
v5 = *v2;
|
|
|
|
|
if ( !*v2 )
|
|
|
|
|
break;
|
|
|
|
|
if ( (unsigned char)v5 < 0x20u || (unsigned char)v5 > 0x7Eu && (unsigned char)v5 < 0xC0u )
|
|
|
|
|
return 1;
|
|
|
|
|
++v2;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
} */
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000BB75
|
|
|
|
|
int __stdcall UiValidPlayerName(char *arg) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
char *v1; // esi
|
|
|
|
|
signed int v2; // edi
|
|
|
|
|
|
|
|
|
|
v1 = arg;
|
|
|
|
|
v2 = 1;
|
|
|
|
|
if ( !strlen(arg) )
|
|
|
|
|
v2 = 0;
|
|
|
|
|
if ( dword_1002A48C == 1 && (SelHero_1000BAB4(v1) || SelHero_1000BB34(v1, " ")) )
|
|
|
|
|
v2 = 0;
|
|
|
|
|
return v2;
|
|
|
|
|
} */
|
|
|
|
|
// 1002A48C: using guessed type int dword_1002A48C;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000BBB4
|
|
|
|
|
int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
int v7; // eax
|
|
|
|
|
int v8; // eax
|
|
|
|
|
|
|
|
|
|
artfont_10001159();
|
|
|
|
|
dword_1002A438 = (int (__stdcall *)(_DWORD))a1;
|
|
|
|
|
dword_1002A450 = (int (UNKCALL *)(_DWORD, _DWORD))a2;
|
|
|
|
|
dword_1002A434 = (int (__stdcall *)(_DWORD))a3;
|
|
|
|
|
dword_1002A410 = (int (__stdcall *)(_DWORD, _DWORD))a4;
|
|
|
|
|
dword_1002A458 = 0;
|
|
|
|
|
dword_1002A48C = 1;
|
|
|
|
|
dword_1002A45C = 0;
|
|
|
|
|
v7 = SDrawGetFrameWindow();
|
|
|
|
|
v8 = SDlgDialogBoxParam(hInstance, "SELHERO_DIALOG", v7, SelHero_1000BC46, 0);
|
|
|
|
|
if ( a5 )
|
|
|
|
|
*(_DWORD *)a5 = v8;
|
|
|
|
|
if ( a7 )
|
|
|
|
|
strcpy(a7, &byte_1002A440);
|
|
|
|
|
if ( a6 )
|
|
|
|
|
*(_DWORD *)a6 = dword_1002A45C;
|
|
|
|
|
return 1;
|
|
|
|
|
} */
|
|
|
|
|
// 10010370: using guessed type int __stdcall SDlgDialogBoxParam(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
|
|
|
|
|
// 10010382: using guessed type _DWORD __stdcall SDrawGetFrameWindow();
|
|
|
|
|
// 1002A410: using guessed type int (__stdcall *dword_1002A410)(_DWORD, _DWORD);
|
|
|
|
|
// 1002A434: using guessed type int (__stdcall *dword_1002A434)(_DWORD);
|
|
|
|
|
// 1002A438: using guessed type int (__stdcall *dword_1002A438)(_DWORD);
|
|
|
|
|
// 1002A450: using guessed type int (UNKCALL *dword_1002A450)(_DWORD, _DWORD);
|
|
|
|
|
// 1002A458: using guessed type int dword_1002A458;
|
|
|
|
|
// 1002A45C: using guessed type int dword_1002A45C;
|
|
|
|
|
// 1002A48C: using guessed type int dword_1002A48C;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000BC46
|
|
|
|
|
int __stdcall SelHero_1000BC46(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
HWND v4; // eax
|
|
|
|
|
int v6; // edx
|
|
|
|
|
HWND v7; // ecx
|
|
|
|
|
signed int v8; // [esp-4h] [ebp-8h]
|
|
|
|
|
int v9; // [esp+0h] [ebp-4h]
|
|
|
|
|
|
|
|
|
|
if ( Msg > 0xBD2 )
|
|
|
|
|
{
|
|
|
|
|
switch ( Msg )
|
|
|
|
|
{
|
|
|
|
|
case 0xBD3u:
|
|
|
|
|
SelHero_1000C21A(hWnd);
|
|
|
|
|
return 0;
|
|
|
|
|
case 0xBD4u:
|
|
|
|
|
SelHero_1000C269(hWnd);
|
|
|
|
|
return 0;
|
|
|
|
|
case 0xBD5u:
|
|
|
|
|
v7 = hWnd;
|
|
|
|
|
if ( dword_1002A48C != 1 )
|
|
|
|
|
{
|
|
|
|
|
v8 = 2;
|
|
|
|
|
goto LABEL_30;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 0xBD6u:
|
|
|
|
|
strcpy(&byte_1002A440, byte_1002A464);
|
|
|
|
|
v6 = 1;
|
|
|
|
|
v7 = hWnd;
|
|
|
|
|
if ( dword_1002A48C != 1 )
|
|
|
|
|
{
|
|
|
|
|
dword_1002A420 = 0;
|
|
|
|
|
LABEL_31:
|
|
|
|
|
SelHero_1000C3E2((int)v7, v6);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 0xBD7u:
|
|
|
|
|
SelHero_1000BDAD(hWnd);
|
|
|
|
|
return 0;
|
|
|
|
|
default:
|
|
|
|
|
return SDlgDefDialogProc(hWnd, Msg, wParam, lParam);
|
|
|
|
|
}
|
|
|
|
|
v8 = 3;
|
|
|
|
|
LABEL_30:
|
|
|
|
|
v6 = v8;
|
|
|
|
|
goto LABEL_31;
|
|
|
|
|
}
|
|
|
|
|
if ( Msg == 3026 )
|
|
|
|
|
{
|
|
|
|
|
SelHero_1000C09B(hWnd);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
if ( Msg == 2 )
|
|
|
|
|
{
|
|
|
|
|
SelHero_1000C364(hWnd);
|
|
|
|
|
return SDlgDefDialogProc(hWnd, Msg, wParam, lParam);
|
|
|
|
|
}
|
|
|
|
|
if ( Msg <= 0x103 )
|
|
|
|
|
return SDlgDefDialogProc(hWnd, Msg, wParam, lParam);
|
|
|
|
|
if ( Msg <= 0x105 )
|
|
|
|
|
{
|
|
|
|
|
v4 = (HWND)SDrawGetFrameWindow();
|
|
|
|
|
SendMessageA(v4, Msg, wParam, lParam);
|
|
|
|
|
return SDlgDefDialogProc(hWnd, Msg, wParam, lParam);
|
|
|
|
|
}
|
|
|
|
|
switch ( Msg )
|
|
|
|
|
{
|
|
|
|
|
case 0x110u:
|
|
|
|
|
SelHero_1000C3FF(hWnd);
|
|
|
|
|
PostMessageA(hWnd, 0x7E8u, 0, 0);
|
|
|
|
|
return 0;
|
|
|
|
|
case 0x7E8u:
|
|
|
|
|
if ( !Fade_1000739F() )
|
|
|
|
|
Fade_100073FD(hWnd, v9);
|
|
|
|
|
return 0;
|
|
|
|
|
case 0xBD0u:
|
|
|
|
|
SelHero_1000BF6D(hWnd);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
if ( Msg != 3025 )
|
|
|
|
|
return SDlgDefDialogProc(hWnd, Msg, wParam, lParam);
|
|
|
|
|
SelHero_1000BFF9(hWnd);
|
|
|
|
|
return 0;
|
|
|
|
|
} */
|
|
|
|
|
// 1001037C: using guessed type int __stdcall SDlgDefDialogProc(_DWORD, _DWORD, _DWORD, _DWORD);
|
|
|
|
|
// 10010382: using guessed type _DWORD __stdcall SDrawGetFrameWindow();
|
|
|
|
|
// 1002A420: using guessed type int dword_1002A420;
|
|
|
|
|
// 1002A48C: using guessed type int dword_1002A48C;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000BDAD
|
|
|
|
|
BOOL UNKCALL SelHero_1000BDAD(HWND arg) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
const char *v1; // eax
|
|
|
|
|
CHAR v3; // [esp+Ch] [ebp-B4h]
|
|
|
|
|
CHAR v4; // [esp+5Ch] [ebp-64h]
|
|
|
|
|
CHAR Buffer; // [esp+9Ch] [ebp-24h]
|
|
|
|
|
HWND hWnd; // [esp+BCh] [ebp-4h]
|
|
|
|
|
|
|
|
|
|
hWnd = arg;
|
|
|
|
|
if ( SelHero_1000B7CA() == 1 )
|
|
|
|
|
LoadStringA(hInstance, 0x23u, &Buffer, 31);
|
|
|
|
|
else
|
|
|
|
|
LoadStringA(hInstance, 0x22u, &Buffer, 31);
|
|
|
|
|
LoadStringA(hInstance, 7u, &v4, 63);
|
|
|
|
|
wsprintfA(&v3, &v4, &byte_1002A440);
|
|
|
|
|
if ( SelYesNo_1000FA49((int)hWnd, &v3, (int)&Buffer, 1) != 2 )
|
|
|
|
|
{
|
|
|
|
|
v1 = SelHero_1000BF4A((const char *)dword_1002A458, &byte_1002A440);
|
|
|
|
|
if ( v1 )
|
|
|
|
|
{
|
|
|
|
|
if ( dword_1002A434(v1) )
|
|
|
|
|
{
|
|
|
|
|
dword_1002A458 = (int)SelHero_1000BEDB((int *)dword_1002A458, &byte_1002A440);
|
|
|
|
|
--dword_1002A428;
|
|
|
|
|
LoadStringA(hInstance, 0x1Eu, &v4, 15);
|
|
|
|
|
if ( !strcmp(&v4, (const char *)(dword_1002A458 + 4)) )
|
|
|
|
|
return PostMessageA(hWnd, 0xBD1u, 0, 0);
|
|
|
|
|
SelHero_1000B905(hWnd, dword_1002A458);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
LoadStringA(hInstance, 0x11u, &v4, 63);
|
|
|
|
|
SelYesNo_1000FD39((int)hWnd, &v4, (int)&Buffer, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return PostMessageA(hWnd, 0xBD0u, 0, 0);
|
|
|
|
|
} */
|
|
|
|
|
// 1002A428: using guessed type int dword_1002A428;
|
|
|
|
|
// 1002A434: using guessed type int (__stdcall *dword_1002A434)(_DWORD);
|
|
|
|
|
// 1002A458: using guessed type int dword_1002A458;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000BEDB
|
|
|
|
|
int *__fastcall SelHero_1000BEDB(int *a1, char *a2) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
int *v2; // ebx
|
|
|
|
|
_DWORD *v3; // ebp
|
|
|
|
|
_DWORD *v4; // edi
|
|
|
|
|
int *v5; // esi
|
|
|
|
|
char *v7; // [esp+10h] [ebp-4h]
|
|
|
|
|
|
|
|
|
|
v2 = a1;
|
|
|
|
|
v3 = 0;
|
|
|
|
|
v4 = 0;
|
|
|
|
|
v7 = a2;
|
|
|
|
|
v5 = a1;
|
|
|
|
|
if ( a1 )
|
|
|
|
|
{
|
|
|
|
|
while ( !v4 )
|
|
|
|
|
{
|
|
|
|
|
if ( !strcmp((const char *)v5 + 4, v7) )
|
|
|
|
|
{
|
|
|
|
|
v4 = v5;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
v3 = v5;
|
|
|
|
|
v5 = (int *)*v5;
|
|
|
|
|
}
|
|
|
|
|
if ( !v5 )
|
|
|
|
|
{
|
|
|
|
|
if ( !v4 )
|
|
|
|
|
return v2;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( v3 )
|
|
|
|
|
*v3 = *v4;
|
|
|
|
|
else
|
|
|
|
|
v2 = (int *)*v4;
|
|
|
|
|
SelHero_1000BF33(v4);
|
|
|
|
|
}
|
|
|
|
|
return v2;
|
|
|
|
|
} */
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000BF33
|
|
|
|
|
int UNKCALL SelHero_1000BF33(void *arg) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
int result; // eax
|
|
|
|
|
|
|
|
|
|
if ( arg )
|
|
|
|
|
result = SMemFree(arg, "C:\\Src\\Diablo\\DiabloUI\\SelHero.cpp", 131, 0);
|
|
|
|
|
return result;
|
|
|
|
|
} */
|
|
|
|
|
// 10010340: using guessed type int __stdcall SMemFree(_DWORD, _DWORD, _DWORD, _DWORD);
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000BF4A
|
|
|
|
|
const char *__fastcall SelHero_1000BF4A(const char *a1, const char *a2) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
const char *v2; // edi
|
|
|
|
|
const char *i; // esi
|
|
|
|
|
|
|
|
|
|
v2 = a2;
|
|
|
|
|
for ( i = a1; i && _strcmpi(i + 4, v2); i = *(const char **)i )
|
|
|
|
|
;
|
|
|
|
|
return i;
|
|
|
|
|
} */
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000BF6D
|
|
|
|
|
int UNKCALL SelHero_1000BF6D(HWND hWnd) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
HWND v1; // esi
|
|
|
|
|
int v2; // eax
|
|
|
|
|
int v4; // edx
|
|
|
|
|
|
|
|
|
|
v1 = hWnd;
|
|
|
|
|
v2 = SDlgDialogBoxParam(hInstance, "SELLIST_DIALOG", hWnd, SelList_1000D774, 0);
|
|
|
|
|
if ( v2 == 1 )
|
|
|
|
|
{
|
|
|
|
|
if ( !strlen(&byte_1002A440) )
|
|
|
|
|
return PostMessageA(v1, 0xBD1u, 0, 0);
|
|
|
|
|
if ( dword_1002A48C == 1 )
|
|
|
|
|
return PostMessageA(v1, 0xBD5u, 0, 0);
|
|
|
|
|
if ( dword_1002A424 )
|
|
|
|
|
return PostMessageA(v1, 0xBD3u, 0, 0);
|
|
|
|
|
dword_1002A420 = 0;
|
|
|
|
|
v4 = 1;
|
|
|
|
|
return SelHero_1000C3E2((int)v1, v4);
|
|
|
|
|
}
|
|
|
|
|
if ( v2 != 1006 )
|
|
|
|
|
{
|
|
|
|
|
v4 = 4;
|
|
|
|
|
return SelHero_1000C3E2((int)v1, v4);
|
|
|
|
|
}
|
|
|
|
|
return PostMessageA(v1, 0xBD7u, 0, 0);
|
|
|
|
|
} */
|
|
|
|
|
// 10010370: using guessed type int __stdcall SDlgDialogBoxParam(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
|
|
|
|
|
// 1002A420: using guessed type int dword_1002A420;
|
|
|
|
|
// 1002A424: using guessed type int dword_1002A424;
|
|
|
|
|
// 1002A48C: using guessed type int dword_1002A48C;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000BFF9
|
|
|
|
|
int UNKCALL SelHero_1000BFF9(HWND hWnd) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
HWND v1; // esi
|
|
|
|
|
int v2; // eax
|
|
|
|
|
int v3; // eax
|
|
|
|
|
int result; // eax
|
|
|
|
|
CHAR Buffer; // [esp+8h] [ebp-20h]
|
|
|
|
|
|
|
|
|
|
v1 = hWnd;
|
|
|
|
|
v2 = SDlgDialogBoxParam(hInstance, "SELCLASS_DIALOG", hWnd, SelClass_10009D66, 0);
|
|
|
|
|
if ( v2 == -1 || v2 == 2 )
|
|
|
|
|
{
|
|
|
|
|
LoadStringA(hInstance, 0x1Eu, &Buffer, 31);
|
|
|
|
|
if ( !strcmp(&Buffer, (const char *)(dword_1002A458 + 4)) )
|
|
|
|
|
result = SelHero_1000C3E2((int)v1, 4);
|
|
|
|
|
else
|
|
|
|
|
result = PostMessageA(v1, 0xBD0u, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
v3 = v2 - 1063;
|
|
|
|
|
if ( v3 )
|
|
|
|
|
{
|
|
|
|
|
if ( v3 == 1 )
|
|
|
|
|
byte_1002A476 = 2;
|
|
|
|
|
else
|
|
|
|
|
byte_1002A476 = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
byte_1002A476 = 1;
|
|
|
|
|
}
|
|
|
|
|
result = PostMessageA(v1, 0xBD2u, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
} */
|
|
|
|
|
// 10010370: using guessed type int __stdcall SDlgDialogBoxParam(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
|
|
|
|
|
// 1002A458: using guessed type int dword_1002A458;
|
|
|
|
|
// 1002A476: using guessed type char byte_1002A476;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000C09B
|
|
|
|
|
int UNKCALL SelHero_1000C09B(HWND hWnd) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
HWND v1; // esi
|
|
|
|
|
int result; // eax
|
|
|
|
|
char v3; // [esp+8h] [ebp-10h]
|
|
|
|
|
char v4; // [esp+17h] [ebp-1h]
|
|
|
|
|
|
|
|
|
|
v1 = hWnd;
|
|
|
|
|
if ( SDlgDialogBoxParam(hInstance, "ENTERNAME_DIALOG", hWnd, EntName_10006F7C, &v3) != 1 )
|
|
|
|
|
return PostMessageA(v1, 0xBD1u, 0, 0);
|
|
|
|
|
v4 = 0;
|
|
|
|
|
if ( SelHero_1000C0F9((int)v1, &v3) )
|
|
|
|
|
result = PostMessageA(v1, 0xBD6u, 0, 0);
|
|
|
|
|
else
|
|
|
|
|
result = PostMessageA(v1, 0xBD2u, 0, 0);
|
|
|
|
|
return result;
|
|
|
|
|
} */
|
|
|
|
|
// 10010370: using guessed type int __stdcall SDlgDialogBoxParam(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000C0F9
|
|
|
|
|
signed int __fastcall SelHero_1000C0F9(int a1, char *a2) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
const char *v2; // edi
|
|
|
|
|
int v3; // ST0C_4
|
|
|
|
|
CHAR v5; // [esp+Ch] [ebp-138h]
|
|
|
|
|
CHAR v6; // [esp+9Ch] [ebp-A8h]
|
|
|
|
|
CHAR Buffer; // [esp+11Ch] [ebp-28h]
|
|
|
|
|
int v8; // [esp+13Ch] [ebp-8h]
|
|
|
|
|
char *v9; // [esp+140h] [ebp-4h]
|
|
|
|
|
|
|
|
|
|
v9 = a2;
|
|
|
|
|
v8 = a1;
|
|
|
|
|
if ( SelHero_1000B7CA() == 1 )
|
|
|
|
|
LoadStringA(hInstance, 0x20u, &Buffer, 31);
|
|
|
|
|
else
|
|
|
|
|
LoadStringA(hInstance, 0x1Fu, &Buffer, 31);
|
|
|
|
|
if ( !UiValidPlayerName(v9) )
|
|
|
|
|
{
|
|
|
|
|
LoadStringA(hInstance, 0xFu, &v6, 127);
|
|
|
|
|
SelYesNo_1000FD39(v8, &v6, (int)&Buffer, 1);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
v2 = SelHero_1000BF4A((const char *)dword_1002A458, v9);
|
|
|
|
|
if ( v2 )
|
|
|
|
|
{
|
|
|
|
|
LoadStringA(hInstance, 8u, &v6, 127);
|
|
|
|
|
wsprintfA(&v5, &v6, v2 + 4);
|
|
|
|
|
if ( SelYesNo_1000FA49(v8, &v5, (int)&Buffer, 1) == 2 )
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
strcpy(byte_1002A464, v9);
|
|
|
|
|
dword_1002A484 = 0;
|
|
|
|
|
if ( !dword_1002A450(v3, &unk_1002A460) )
|
|
|
|
|
{
|
|
|
|
|
LoadStringA(hInstance, 0x10u, &v6, 127);
|
|
|
|
|
OkCancel_1000930A(v8, (int)&v6, 1);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
dword_1002A45C = 1;
|
|
|
|
|
return 1;
|
|
|
|
|
} */
|
|
|
|
|
// 1002A450: using guessed type int (UNKCALL *dword_1002A450)(_DWORD, _DWORD);
|
|
|
|
|
// 1002A458: using guessed type int dword_1002A458;
|
|
|
|
|
// 1002A45C: using guessed type int dword_1002A45C;
|
|
|
|
|
// 1002A484: using guessed type int dword_1002A484;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000C21A
|
|
|
|
|
BOOL UNKCALL SelHero_1000C21A(HWND hWnd) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
HWND v1; // esi
|
|
|
|
|
int v2; // eax
|
|
|
|
|
|
|
|
|
|
v1 = hWnd;
|
|
|
|
|
v2 = SDlgDialogBoxParam(hInstance, "SELLOAD_DIALOG", hWnd, SelLoad_1000E1C2, 0);
|
|
|
|
|
if ( v2 == -1 || v2 == 2 )
|
|
|
|
|
return PostMessageA(v1, 0xBD0u, 0, 0);
|
|
|
|
|
if ( v2 == 1106 )
|
|
|
|
|
return PostMessageA(v1, 0xBD5u, 0, 0);
|
|
|
|
|
return PostMessageA(v1, 0xBD4u, 0, 0);
|
|
|
|
|
} */
|
|
|
|
|
// 10010370: using guessed type int __stdcall SDlgDialogBoxParam(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000C269
|
|
|
|
|
int UNKCALL SelHero_1000C269(HWND hWnd) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
HWND v1; // ebx
|
|
|
|
|
int v2; // ecx
|
|
|
|
|
const char *v4; // eax
|
|
|
|
|
int v5; // eax
|
|
|
|
|
CHAR Buffer; // [esp+4h] [ebp-208h]
|
|
|
|
|
char v7; // [esp+104h] [ebp-108h]
|
|
|
|
|
char v8; // [esp+184h] [ebp-88h]
|
|
|
|
|
char v9; // [esp+204h] [ebp-8h]
|
|
|
|
|
char v10; // [esp+208h] [ebp-4h]
|
|
|
|
|
|
|
|
|
|
v1 = hWnd;
|
|
|
|
|
if ( !SelHero_1000B7CA() )
|
|
|
|
|
{
|
|
|
|
|
SelHero_1000B7AC(0);
|
|
|
|
|
v2 = (int)v1;
|
|
|
|
|
return SelHero_1000C3E2(v2, 1);
|
|
|
|
|
}
|
|
|
|
|
CreaDung_10004C33((void *)1);
|
|
|
|
|
if ( SDlgDialogBoxParam(hInstance, "SELDIFF_DIALOG", v1, CreaDung_10004C4A, dword_1002A48C) != 1 )
|
|
|
|
|
return PostMessageA(v1, 0xBD3u, 0, 0);
|
|
|
|
|
v4 = SelHero_1000BF4A((const char *)dword_1002A458, &byte_1002A440);
|
|
|
|
|
UiCreatePlayerDescription((int)v4, 1145195599, (int)&v8);
|
|
|
|
|
v10 = dword_1002A420;
|
|
|
|
|
Connect_10003E0C((int)&v9, &byte_1002A440, &v8, &v7, 128);
|
|
|
|
|
v5 = UiAuthCallback(2, (int)&byte_1002A440, &v8, 0, &v7, &Buffer, 256);
|
|
|
|
|
v2 = (int)v1;
|
|
|
|
|
if ( v5 )
|
|
|
|
|
return SelHero_1000C3E2(v2, 1);
|
|
|
|
|
SelYesNo_1000FD39((int)v1, &Buffer, 0, 1);
|
|
|
|
|
return PostMessageA(v1, 0xBD4u, 0, 0);
|
|
|
|
|
} */
|
|
|
|
|
// 10010370: using guessed type int __stdcall SDlgDialogBoxParam(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
|
|
|
|
|
// 1002A420: using guessed type int dword_1002A420;
|
|
|
|
|
// 1002A458: using guessed type int dword_1002A458;
|
|
|
|
|
// 1002A48C: using guessed type int dword_1002A48C;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000C364
|
|
|
|
|
void UNKCALL SelHero_1000C364(HWND hDlg) { return; }
|
|
|
|
|
/* {
|
|
|
|
|
HWND v1; // esi
|
|
|
|
|
_DWORD *v2; // eax
|
|
|
|
|
|
|
|
|
|
v1 = hDlg;
|
|
|
|
|
Doom_10006C53(hDlg, (int *)&unk_10023020);
|
|
|
|
|
Doom_10006C53(v1, (int *)&unk_10023008);
|
|
|
|
|
Doom_10006C53(v1, (int *)&unk_10023000);
|
|
|
|
|
Title_100100E7(v1);
|
|
|
|
|
SelHero_1000C3CE((_DWORD *)dword_1002A458);
|
|
|
|
|
if ( dword_1002A498 )
|
|
|
|
|
{
|
|
|
|
|
SMemFree(dword_1002A498, "C:\\Src\\Diablo\\DiabloUI\\SelHero.cpp", 744, 0);
|
|
|
|
|
dword_1002A498 = 0;
|
|
|
|
|
}
|
|
|
|
|
v2 = (_DWORD *)GetWindowLongA(v1, -21);
|
|
|
|
|
local_10007F72(v2);
|
|
|
|
|
} */
|
|
|
|
|
// 10010340: using guessed type int __stdcall SMemFree(_DWORD, _DWORD, _DWORD, _DWORD);
|
|
|
|
|
// 1002A458: using guessed type int dword_1002A458;
|
|
|
|
|
// 1002A498: using guessed type int dword_1002A498;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000C3CE
|
|
|
|
|
int __fastcall SelHero_1000C3CE(_DWORD *a1) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
_DWORD *v1; // esi
|
|
|
|
|
int result; // eax
|
|
|
|
|
|
|
|
|
|
if ( a1 )
|
|
|
|
|
{
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
v1 = (_DWORD *)*a1;
|
|
|
|
|
result = SelHero_1000BF33(a1);
|
|
|
|
|
a1 = v1;
|
|
|
|
|
}
|
|
|
|
|
while ( v1 );
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
} */
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000C3E2
|
|
|
|
|
int __fastcall SelHero_1000C3E2(int a1, int a2) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
int v2; // edi
|
|
|
|
|
int v3; // esi
|
|
|
|
|
|
|
|
|
|
v2 = a2;
|
|
|
|
|
v3 = a1;
|
|
|
|
|
Fade_100073B4();
|
|
|
|
|
Fade_100072BE(10);
|
|
|
|
|
return SDlgEndDialog(v3, v2);
|
|
|
|
|
} */
|
|
|
|
|
// 10010376: using guessed type int __stdcall SDlgEndDialog(_DWORD, _DWORD);
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000C3FF
|
|
|
|
|
int UNKCALL SelHero_1000C3FF(HWND hWnd) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
HWND v1; // eax
|
|
|
|
|
int v2; // eax
|
|
|
|
|
HWND v3; // eax
|
|
|
|
|
int v4; // eax
|
|
|
|
|
HWND v5; // eax
|
|
|
|
|
int v6; // eax
|
|
|
|
|
HWND v7; // eax
|
|
|
|
|
int v8; // eax
|
|
|
|
|
HWND v9; // eax
|
|
|
|
|
int v10; // eax
|
|
|
|
|
HWND v12; // esi
|
|
|
|
|
int v13; // eax
|
|
|
|
|
int *v14; // edi
|
|
|
|
|
void *v15; // [esp+0h] [ebp-8h]
|
|
|
|
|
HWND v16; // [esp+0h] [ebp-8h]
|
|
|
|
|
|
|
|
|
|
v12 = hWnd;
|
|
|
|
|
SelHero_1000C49F(hWnd, v15);
|
|
|
|
|
v13 = local_10007F46();
|
|
|
|
|
v14 = (int *)v13;
|
|
|
|
|
if ( v13 )
|
|
|
|
|
{
|
|
|
|
|
SetWindowLongA(v12, -21, v13);
|
|
|
|
|
local_10007944((int)v12, 0, &byte_10029448, -1, 1, (int)"ui_art\\selhero.pcx", v14, v14 + 1, 0);
|
|
|
|
|
Fade_100073C5(v12, 1);
|
|
|
|
|
}
|
|
|
|
|
local_100078BE((int)"ui_art\\heros.pcx", &dword_1002A498, &dword_1002A418);
|
|
|
|
|
SetActiveWindow(v12);
|
|
|
|
|
Title_1001009E(v12, (int)"ui_art\\smlogo.pcx", v16);
|
|
|
|
|
Doom_100068AB(v12, (int *)&unk_10023000, 5);
|
|
|
|
|
Doom_100068AB(v12, (int *)&unk_10023008, 1);
|
|
|
|
|
Doom_100068AB(v12, (int *)&unk_10023020, 1);
|
|
|
|
|
dword_1002A424 = 0;
|
|
|
|
|
byte_1002A440 = 0;
|
|
|
|
|
v1 = GetDlgItem(v12, 1014);
|
|
|
|
|
v2 = GetWindowLongA(v1, -21);
|
|
|
|
|
local_10007FA4(v2, "--");
|
|
|
|
|
v3 = GetDlgItem(v12, 1018);
|
|
|
|
|
v4 = GetWindowLongA(v3, -21);
|
|
|
|
|
local_10007FA4(v4, "--");
|
|
|
|
|
v5 = GetDlgItem(v12, 1017);
|
|
|
|
|
v6 = GetWindowLongA(v5, -21);
|
|
|
|
|
local_10007FA4(v6, "--");
|
|
|
|
|
v7 = GetDlgItem(v12, 1016);
|
|
|
|
|
v8 = GetWindowLongA(v7, -21);
|
|
|
|
|
local_10007FA4(v8, "--");
|
|
|
|
|
v9 = GetDlgItem(v12, 1015);
|
|
|
|
|
v10 = GetWindowLongA(v9, -21);
|
|
|
|
|
local_10007FA4(v10, "--");
|
|
|
|
|
SelHero_1000B899(v12, 3);
|
|
|
|
|
return Doom_10006A13(v12, (int *)&unk_10023020, 1);
|
|
|
|
|
} */
|
|
|
|
|
// 1002A418: using guessed type int dword_1002A418;
|
|
|
|
|
// 1002A424: using guessed type int dword_1002A424;
|
|
|
|
|
// 1002A498: using guessed type int dword_1002A498;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000C49F
|
|
|
|
|
BOOL UNKCALL SelHero_1000C49F(HWND hWnd, void *a2) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
HWND v2; // ebx
|
|
|
|
|
int v3; // esi
|
|
|
|
|
BOOL result; // eax
|
|
|
|
|
int v5; // [esp+10h] [ebp-44h]
|
|
|
|
|
CHAR Buffer; // [esp+14h] [ebp-40h]
|
|
|
|
|
|
|
|
|
|
v2 = hWnd;
|
|
|
|
|
v3 = SelHero_1000B7B9();
|
|
|
|
|
*(_DWORD *)v3 = 0;
|
|
|
|
|
LoadStringA(hInstance, 0x1Eu, (LPSTR)(v3 + 4), 15);
|
|
|
|
|
*(_WORD *)(v3 + 20) = 0;
|
|
|
|
|
dword_1002A458 = (int)SelRegn_1000EF56(dword_1002A458, (_DWORD *)v3);
|
|
|
|
|
v5 = dword_1002A458;
|
|
|
|
|
dword_1002A428 = 1;
|
|
|
|
|
if ( !dword_1002A438(SelHero_1000C541) )
|
|
|
|
|
{
|
|
|
|
|
LoadStringA(hInstance, 0x12u, &Buffer, 64);
|
|
|
|
|
OkCancel_1000930A((int)v2, (int)&Buffer, 1);
|
|
|
|
|
}
|
|
|
|
|
if ( v5 == dword_1002A458 )
|
|
|
|
|
result = PostMessageA(v2, 0xBD1u, 0, 0);
|
|
|
|
|
else
|
|
|
|
|
result = PostMessageA(v2, 0xBD0u, 0, 0);
|
|
|
|
|
return result;
|
|
|
|
|
} */
|
|
|
|
|
// 1002A428: using guessed type int dword_1002A428;
|
|
|
|
|
// 1002A438: using guessed type int (__stdcall *dword_1002A438)(_DWORD);
|
|
|
|
|
// 1002A458: using guessed type int dword_1002A458;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000C541
|
|
|
|
|
signed int __stdcall SelHero_1000C541(void *a1) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
_DWORD *v1; // esi
|
|
|
|
|
_DWORD *v2; // eax
|
|
|
|
|
|
|
|
|
|
v1 = (_DWORD *)SelHero_1000B7B9();
|
|
|
|
|
memcpy(v1, a1, 0x2Cu);
|
|
|
|
|
*v1 = 0;
|
|
|
|
|
v2 = SelRegn_1000EF56(dword_1002A458, v1);
|
|
|
|
|
++dword_1002A428;
|
|
|
|
|
dword_1002A458 = (int)v2;
|
|
|
|
|
return 1;
|
|
|
|
|
} */
|
|
|
|
|
// 1002A428: using guessed type int dword_1002A428;
|
|
|
|
|
// 1002A458: using guessed type int dword_1002A458;
|
|
|
|
|
|
|
|
|
|
// ref: 0x1000C57A
|
|
|
|
|
int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty) { return 0; }
|
|
|
|
|
/* {
|
|
|
|
|
int v7; // eax
|
|
|
|
|
int v8; // edi
|
|
|
|
|
|
|
|
|
|
artfont_10001159();
|
|
|
|
|
dword_1002A438 = (int (__stdcall *)(_DWORD))a1;
|
|
|
|
|
dword_1002A450 = (int (UNKCALL *)(_DWORD, _DWORD))a2;
|
|
|
|
|
dword_1002A434 = (int (__stdcall *)(_DWORD))a3;
|
|
|
|
|
dword_1002A410 = (int (__stdcall *)(_DWORD, _DWORD))a4;
|
|
|
|
|
dword_1002A458 = 0;
|
|
|
|
|
dword_1002A48C = 0;
|
|
|
|
|
v7 = SDrawGetFrameWindow();
|
|
|
|
|
v8 = SDlgDialogBoxParam(hInstance, "SELHERO_DIALOG", v7, SelHero_1000BC46, 0);
|
|
|
|
|
if ( a5 )
|
|
|
|
|
*(_DWORD *)a5 = v8;
|
|
|
|
|
if ( a6 )
|
|
|
|
|
strcpy(a6, &byte_1002A440);
|
|
|
|
|
if ( a7 )
|
|
|
|
|
*(_DWORD *)a7 = dword_1002A420;
|
|
|
|
|
if ( v8 != 4 )
|
|
|
|
|
artfont_100010C8();
|
|
|
|
|
return 1;
|
|
|
|
|
} */
|
|
|
|
|
// 10010370: using guessed type int __stdcall SDlgDialogBoxParam(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
|
|
|
|
|
// 10010382: using guessed type _DWORD __stdcall SDrawGetFrameWindow();
|
|
|
|
|
// 1002A410: using guessed type int (__stdcall *dword_1002A410)(_DWORD, _DWORD);
|
|
|
|
|
// 1002A420: using guessed type int dword_1002A420;
|
|
|
|
|
// 1002A434: using guessed type int (__stdcall *dword_1002A434)(_DWORD);
|
|
|
|
|
// 1002A438: using guessed type int (__stdcall *dword_1002A438)(_DWORD);
|
|
|
|
|
// 1002A450: using guessed type int (UNKCALL *dword_1002A450)(_DWORD, _DWORD);
|
|
|
|
|
// 1002A458: using guessed type int dword_1002A458;
|
|
|
|
|
// 1002A48C: using guessed type int dword_1002A48C;
|