reman3/game_re/gh_fix/r3_setupWindow.cxx

156 lines
4.9 KiB
C++

// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
#include <r3/binders/auto.h>
#include <gh_global.h>
extern "C" {
undefined4 get_one(void); // 00485bd0 // get_one
void set_unk(HWND wnd); // 0043e620 // set_unk
int r3_get_gli_width0(void); // 004012c0 // r3_get_gli_width0
int r3_get_gli_height0(void); // 004012d0 // r3_get_gli_height0
undefined4 FUN_0046ed70(char * param_1, short * param_2); // 0046ed70 // FUN_0046ed70
undefined FUN_0046f640(undefined param_1, short param_2, undefined4 * param_3); // 0046f640 // FUN_0046f640
void FUN_0047c150(short param_1, short param_2, int param_3); // 0047c150 // FUN_0047c150
long r3_windowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); // 004025e0 // r3_windowProc
int r3_get_gli_width1(void); // 0047baf0 // r3_get_gli_width1
void r3_load_splash_bitmap(HWND unused); // 00402450 // r3_load_splash_bitmap
int r3_get_gli_height1(void); // 0047bb00 // r3_get_gli_height1
undefined4 FUN_0046f0b0(short param_1, undefined4 * param_2, short * param_3); // 0046f0b0 // FUN_0046f0b0
void r3_set_window_wh(undefined4 param_1, undefined4 param_2); // 004012a0 // r3_set_window_wh
// 00402140
undefined4 r3_setupWindow(HINSTANCE hInstance,undefined4 param_2,int maximizeWindow)
{
ATOM AVar1;
int iVar2;
HWND hWnd;
HWND pHVar3;
bool bVar4;
char acStack_e0 [28];
int iStack_c4;
int iStack_c0;
undefined4 uStack_bc;
HWND pHStack_b8;
HWND pHStack_b4;
undefined4 uStack_b0;
undefined4 uStack_ac;
undefined4 auStack_80 [5];
undefined4 uStack_6c;
DWORD dwStyle;
int iVar5;
int iVar6;
undefined local_28 [28];
HBRUSH pHStack_c;
LPCSTR pCStack_8;
char *pcStack_4;
INT_0077d0a4 = 1;
/* WindowClassA (overlaps usage below) */
local_28 + Field<0, 4>() = 0x3003;
local_28 + Field<4, 4>() = r3_windowProc;
local_28 + Field<8, 4>() = 0;
local_28 + Field<12, 4>() = 0;
local_28 + Field<16, 4>() = hInstance;
local_28 + Field<20, 4>() = LoadIconA(hInstance,(LPCSTR)0x65);
local_28 + Field<24, 4>() = LoadCursorA((HINSTANCE)0x0,(LPCSTR)0x7f00);
pHStack_c = (HBRUSH)0x6;
pCStack_8 = (LPCSTR)0x0;
pcStack_4 = g_windowTitle;
AVar1 = RegisterClassA((WNDCLASSA *)local_28);
if (AVar1 != 0) {
bVar4 = maximizeWindow == 0;
if (bVar4) {
iVar5 = GetSystemMetrics(0x20);
iVar5 = iVar5 * 2 + 0x140;
iVar6 = GetSystemMetrics(0x21);
iVar2 = GetSystemMetrics(4);
iVar6 = iVar2 + 0xf0 + iVar6 * 2;
dwStyle = 0x90cf0000;
}
else {
iVar6 = 0xf0;
iVar5 = 0x140;
dwStyle = 0x91000000;
}
uStack_6c = 0x40221d;
hWnd = CreateWindowExA(0,g_windowTitle,g_windowTitle,dwStyle,(uint)bVar4,(uint)bVar4,iVar5,iVar6
,(HWND)0x0,(HMENU)0x0,hInstance,(LPVOID)0x0);
g_gameHWND1 = hWnd;
if (hWnd != (HWND)0x0) {
g_gameHWND = hWnd;
SetWindowTextA(hWnd,s_windowTitle);
if (maximizeWindow == 0) {
/* SW_NORMAL */
iVar5 = 1;
}
else {
/* SW_MAXIMIZE */
iVar5 = 3;
}
ShowWindow(hWnd,iVar5);
SetWindowPos(hWnd,(HWND)0x0,0,0,0,0,0x43);
EnableWindow(hWnd,1);
SetFocus(hWnd);
UpdateWindow(hWnd);
SetForegroundWindow(hWnd);
pHVar3 = GetFocus();
while (pHVar3 != hWnd) {
SetWindowPos(hWnd,(HWND)0x0,0,0,0,0,0x43);
EnableWindow(hWnd,1);
SetFocus(hWnd);
UpdateWindow(hWnd);
SetForegroundWindow(hWnd);
pHVar3 = GetFocus();
}
set_unk(hWnd);
r3_load_splash_bitmap(hWnd);
INT_0077d0a4 = 1;
iVar5 = get_one();
/* always taken */
if (iVar5 != 0) {
iVar5 = get_one();
/* never taken */
if (iVar5 == 0) {
/* WARNING: Subroutine does not return */
exit(-1);
}
iVar5 = r3_get_gli_height1();
iVar6 = r3_get_gli_width1();
r3_set_window_wh(iVar6,iVar5);
GetClientRect(g_gameHWND,(LPRECT)(local_28 + 0x18));
uStack_b0 = 1;
iStack_c4 = r3_get_gli_width0();
iStack_c0 = r3_get_gli_height0();
uStack_bc = 0x10;
pHStack_b8 = g_gameHWND;
pHStack_b4 = g_gameHWND;
uStack_ac = 10;
iVar5 = FUN_0046ed70(acStack_e0,(short *)&WORD_0077d4d4);
if (iVar5 != 0) {
local_28 + Field<0, 4>() = 0;
local_28 + Field<4, 4>() = (WNDPROC)0x0;
iVar5 = FUN_0046f0b0(WORD_0077d4d4,auStack_80,(short *)&WORD_0077d4d6);
if ((iVar5 != 0) &&
(iVar5 = FUN_0046f640((char)WORD_0077d4d4,WORD_0077d4d6,&DWORD_0077d4d8), iVar5 != 0))
{
if (DWORD_0077d4d8 != 0) {
FUN_0047c150(WORD_0077d4d4,WORD_0077d4d6,DWORD_0077d4d8);
}
return 1;
}
}
/* Failed */
return 0;
}
/* WARNING: Subroutine does not return */
exit(-1);
}
}
/* Failed */
return 0;
}
}