forked from diasurgical/devilution
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathselload.cpp
More file actions
121 lines (113 loc) · 3.37 KB
/
selload.cpp
File metadata and controls
121 lines (113 loc) · 3.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// ref: 0x1000E1C2
LRESULT __stdcall SelLoad_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
HWND v4; // eax
int v5; // edx
HWND v6; // eax
HWND v7; // eax
HWND v9; // eax
if (Msg == 2) {
SelLoad_DeleteProcsAndSpin(hWnd);
return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam);
}
if (Msg <= 0x103)
return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam);
if (Msg <= 0x105) {
v9 = (HWND)SDrawGetFrameWindow(NULL);
SendMessageA(v9, Msg, wParam, lParam);
return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam);
}
if (Msg == 272) {
SelLoad_LoadFocusAndMsg(hWnd);
return 0;
}
if (Msg != 273) {
if (Msg != 275) {
if (Msg == 513) {
v4 = GetDlgItem(hWnd, 1056);
if (local_GetBottomRect(hWnd, v4, (unsigned short)lParam, (unsigned int)lParam >> 16)) {
v5 = 1;
LABEL_19:
SelLoad_SelectSndLoad(hWnd, v5);
return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam);
}
v6 = GetDlgItem(hWnd, 1054);
if (local_GetBottomRect(hWnd, v6, (unsigned short)lParam, (unsigned int)lParam >> 16)) {
LABEL_21:
v5 = 2;
goto LABEL_19;
}
}
return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam);
}
v7 = GetFocus();
Focus_DoBlitSpinIncFrame(hWnd, v7);
return 0;
}
if (HIWORD(wParam) == 7) {
Focus_GetAndBlitSpin(hWnd, lParam);
} else {
if (HIWORD(wParam) != 6) {
v5 = 1;
if (HIWORD(wParam) == 5 || (WORD)wParam == 1)
goto LABEL_19;
if ((WORD)wParam != 2)
return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam);
goto LABEL_21;
}
Focus_CheckPlayMove(lParam);
Focus_DoBlitSpinIncFrame(hWnd, (HWND)lParam);
}
return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam);
}
// 10010382: using guessed type DWORD __stdcall SDrawGetFrameWindow();
// ref: 0x1000E30E
void __fastcall SelLoad_DeleteProcsAndSpin(HWND hWnd)
{
HWND v2; // eax
Focus_DeleteSpinners();
Doom_DeleteFreeProcs(hWnd, selload_msgtbl3);
Doom_DeleteFreeProcs(hWnd, selload_msgtbl2);
Doom_DeleteFreeProcs(hWnd, selload_msgtbl1);
v2 = GetParent(hWnd);
SelHero_SetStringWithMsg(v2, 0);
}
// ref: 0x1000E34B
void __fastcall SelLoad_LoadFocusAndMsg(HWND hWnd)
{
HWND v2; // edi
LONG v3; // eax
char Buffer[32]; // [esp+8h] [ebp-20h]
v2 = GetParent(hWnd);
LoadStringA(ghUiInst, 0x1Du, Buffer, 31);
SelHero_SetStringWithMsg(v2, Buffer);
v3 = GetWindowLongA(v2, -21);
SetWindowLongA(hWnd, -21, v3);
local_DoUiWndProc(hWnd, (DWORD *)selload_msgtbl3);
Doom_ParseWndProc3(hWnd, selload_msgtbl1, AF_BIGGRAY);
Doom_ParseWndProcs(hWnd, selload_msgtbl2, AF_BIG, 0);
Doom_ParseWndProcs(hWnd, selload_msgtbl3, AF_MED, 1);
Focus_LoadSpinner("ui_art\\focus16.pcx");
SDlgSetTimer((int)hWnd, 1, 55, 0);
}
// ref: 0x1000E3E2
void __fastcall SelLoad_SelectSndLoad(HWND hWnd, int a2)
{
int v2; // esi
HWND v4; // eax
v2 = a2;
TitleSnd_PlaySelectSound();
SDlgKillTimer((int)hWnd, 1);
if (v2 == 1) {
v4 = GetFocus();
v2 = GetWindowLongA(v4, -12);
}
SDlgEndDialog(hWnd, (HANDLE)v2);
}
// ref: 0x1000E41A
void __cdecl SelLoad_cpp_init()
{
SelLoad_cpp_float = SelLoad_cpp_float_value;
}
// 1001F46C: using guessed type int SelLoad_cpp_float_value;
// 1002A4C8: using guessed type int SelLoad_cpp_float;