// 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, 3); Doom_ParseWndProcs(hWnd, yesno_msgtbl1, 4, 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; 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;