// ref: 0x1000FA49
int __fastcall SelYesNo_YesNoDialog ( HWND hWnd , char * dialogstr , char * hero , int nofocus )
{
yesno_dialog_string = dialogstr ;
yesno_hero_name = hero ;
yesno_remove_focus = nofocus ;
yesno_is_popup = 0 ;
YesNoFunc = 0 ;
return SDlgDialogBoxParam ( ghUiInst , " SELYESNO_DIALOG " , ( int ) hWnd , SelYesNo_WndProc , 0 ) ;
}
// 1002A500: using guessed type int yesno_remove_focus;
// 1002A508: using guessed type int (*YesNoFunc)(void);
// 1002A50C: using guessed type int yesno_is_popup;
// ref: 0x1000FA87
LRESULT __stdcall SelYesNo_WndProc ( HWND hWnd , UINT Msg , WPARAM wParam , LPARAM lParam )
{
HWND v4 ; // eax
HWND v5 ; // eax
int v7 ; // edx
HWND v8 ; // eax
LONG v9 ; // eax
HWND v10 ; // ecx
HWND v11 ; // eax
if ( Msg = = 2 ) {
SelYesNo_RemoveYNDialog ( hWnd ) ;
return ( LRESULT ) SDlgDefDialogProc ( hWnd , Msg , ( HDC ) wParam , ( HWND ) lParam ) ;
}
if ( Msg > 0x103 ) {
if ( Msg < = 0x105 ) {
v11 = ( HWND ) SDrawGetFrameWindow ( NULL ) ;
SendMessageA ( v11 , Msg , wParam , lParam ) ;
return ( LRESULT ) SDlgDefDialogProc ( hWnd , Msg , ( HDC ) wParam , ( HWND ) lParam ) ;
}
switch ( Msg ) {
case 0x110u :
SelYesNo_LoadSelYN_GFX ( hWnd ) ;
return 0 ;
case 0x111u :
if ( HIWORD ( wParam ) = = 7 ) {
Focus_GetAndBlitSpin ( hWnd , lParam ) ;
} else if ( HIWORD ( wParam ) = = 6 ) {
Focus_CheckPlayMove ( lParam ) ;
Focus_DoBlitSpinIncFrame ( hWnd , ( HWND ) lParam ) ;
} else {
v7 = 1 ;
if ( ( _WORD ) wParam = = 1 ) {
v8 = GetFocus ( ) ;
v9 = GetWindowLongA ( v8 , - 12 ) ;
v10 = hWnd ;
if ( v9 = = 1109 )
v7 = 1 ;
else
v7 = 2 ;
} else {
if ( ( _WORD ) wParam = = 2 ) {
v7 = 2 ;
} else if ( ( _WORD ) wParam ! = 1109 ) {
return ( LRESULT ) SDlgDefDialogProc ( hWnd , Msg , ( HDC ) wParam , ( HWND ) lParam ) ;
}
v10 = hWnd ;
}
SelYesNo_DoSelectYesNo ( v10 , v7 ) ;
}
break ;
case 0x113u :
v4 = GetFocus ( ) ;
if ( ! Focus_DoBlitSpinIncFrame ( hWnd , v4 ) ) {
v5 = GetDlgItem ( hWnd , 1109 ) ;
if ( ! v5 )
v5 = GetDlgItem ( hWnd , 2 ) ;
SetFocus ( v5 ) ;
}
return 0 ;
}
}
return ( LRESULT ) SDlgDefDialogProc ( hWnd , Msg , ( HDC ) wParam , ( HWND ) lParam ) ;
}
// 10010382: using guessed type _DWORD __stdcall SDrawGetFrameWindow();
// ref: 0x1000FBC7
void __fastcall SelYesNo_RemoveYNDialog ( HWND hWnd )
{
HWND v1 ; // esi
void * * v2 ; // eax
HWND v3 ; // eax
v1 = hWnd ;
v2 = ( void * * ) GetWindowLongA ( hWnd , - 21 ) ;
local_FreeMemPtr ( v2 ) ;
if ( yesno_remove_focus )
Focus_DeleteSpinners ( ) ;
Doom_DeleteFreeProcs ( v1 , yesno_msgtbl1 ) ;
Doom_DeleteFreeProcs ( v1 , yesno_msgtbl2 ) ;
if ( yesno_hero_name ) {
v3 = GetParent ( v1 ) ;
SelHero_SetStringWithMsg ( v3 , 0 ) ;
}
}
// 1002A500: using guessed type int yesno_remove_focus;
// ref: 0x1000FC1C
void __fastcall SelYesNo_LoadSelYN_GFX ( HWND hWnd )
{
HWND v2 ; // eax
DWORD * v3 ; // eax
DWORD * v4 ; // edi
const char * v5 ; // eax
char * v6 ; // ST18_4
HWND v7 ; // eax
v2 = GetParent ( hWnd ) ;
if ( yesno_hero_name )
SelHero_SetStringWithMsg ( v2 , yesno_hero_name ) ;
v3 = local_AllocWndLongData ( ) ;
v4 = v3 ;
if ( v3 ) {
SetWindowLongA ( hWnd , - 21 , ( LONG ) v3 ) ;
if ( yesno_is_popup ) {
if ( DiabloUI_GetSpawned ( ) )
v5 = " ui_art \\ swmmpop.pcx " ;
else
v5 = " ui_art \\ mmpopup.pcx " ;
} else {
v5 = " ui_art \\ black.pcx " ;
}
local_LoadArtWithPal ( hWnd , 0 , " Popup " , - 1 , 1 , v5 , ( BYTE * * ) v4 , v4 + 1 , 1 ) ;
}
v6 = yesno_dialog_string ;
v7 = GetDlgItem ( hWnd , 1026 ) ;
SetWindowTextA ( v7 , v6 ) ;
Doom_ParseWndProc3 ( hWnd , yesno_msgtbl2 , AF_MEDGRAY ) ;
Doom_ParseWndProcs ( hWnd , yesno_msgtbl1 , AF_BIG , 1 ) ;
if ( yesno_remove_focus )
Focus_LoadSpinner ( " ui_art \\ focus.pcx " ) ;
else
Focus_ResetSpinToZero ( ) ;
SDlgSetTimer ( ( int ) hWnd , 1 , 55 , 0 ) ;
local_DoUiWndProc2 ( hWnd , ( DWORD * ) yesno_msgtbl1 ) ;
}
// 1002A500: using guessed type int yesno_remove_focus;
// 1002A50C: using guessed type int yesno_is_popup;
// ref: 0x1000FCF6
void __fastcall SelYesNo_DoSelectYesNo ( HWND hWnd , int option )
{
HWND v4 ; // eax
TitleSnd_PlaySelectSound ( ) ;
SDlgKillTimer ( ( int ) hWnd , 1 ) ;
if ( option = = 2 ) {
if ( ! YesNoFunc )
goto LABEL_6 ;
YesNoFunc ( ) ;
}
if ( option = = 1 ) {
v4 = GetFocus ( ) ;
option = GetWindowLongA ( v4 , - 12 ) ;
}
LABEL_6 :
SDlgEndDialog ( hWnd , ( HANDLE ) option ) ;
}
// 1002A508: using guessed type int (*YesNoFunc)(void);
// ref: 0x1000FD39
int __fastcall SelYesNo_SelOkDialog ( HWND hWnd , char * dialogstr , char * hero , int nofocus )
{
yesno_dialog_string = dialogstr ;
yesno_hero_name = hero ;
yesno_remove_focus = nofocus ;
yesno_is_popup = 0 ;
YesNoFunc = 0 ;
return SDlgDialogBoxParam ( ghUiInst , " SELOK_DIALOG " , ( int ) hWnd , SelYesNo_WndProc , 0 ) ;
}
// 1002A500: using guessed type int yesno_remove_focus;
// 1002A508: using guessed type int (*YesNoFunc)(void);
// 1002A50C: using guessed type int yesno_is_popup;
// ref: 0x1000FD77
int __fastcall SelYesNo_SpawnErrDialog ( HWND hWnd , int string_rsrc , int is_popup )
{
char Buffer [ 256 ] ; // [esp+4h] [ebp-100h]
LoadStringA ( ghUiInst , string_rsrc , Buffer , 255 ) ;
yesno_is_popup = is_popup ;
yesno_remove_focus = 0 ;
yesno_hero_name = 0 ;
yesno_dialog_string = Buffer ; // "The Rogue and Sorcerer are only available in the full retail version of Diablo. For ordering information call (800) 953-SNOW."
YesNoFunc = 0 ;
return SDlgDialogBoxParam ( ghUiInst , " SPAWNERR_DIALOG " , ( int ) hWnd , SelYesNo_WndProc , 0 ) ;
}
// 1002A500: using guessed type int yesno_remove_focus;
// 1002A508: using guessed type int (*YesNoFunc)(void);
// 1002A50C: using guessed type int yesno_is_popup;
// ref: 0x1000FDE3
void __cdecl SelYesNo_cpp_init ( )
{
SelYesNo_cpp_float = SelYesNo_cpp_float_value ;
}
// 1001F478: using guessed type int SelYesNo_cpp_float_value;
// 1002A4FC: using guessed type int SelYesNo_cpp_float;