mirror of
https://github.com/smartcmd/MinecraftConsoles.git
synced 2026-08-20 09:57:09 +00:00
Persist fullscreen setting and start windowed mode maximized
Save fullscreen toggle state to options.txt when F11 is pressed, and restore it on the next launch. When starting in windowed mode, the window now opens maximized instead of at a smaller default size. Previously, g_isFullscreen was hardcoded to false and never persisted, so the game always started in windowed mode. The window also started at a non-maximized size requiring manual maximization. Fixes #391
This commit is contained in:
parent
51eb86ad28
commit
718ee71d1c
|
|
@ -124,6 +124,50 @@ static void CopyWideArgToAnsi(LPCWSTR source, char* dest, size_t destSize)
|
||||||
dest[destSize - 1] = 0;
|
dest[destSize - 1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---------- Persistent options (options.txt next to exe) ----------
|
||||||
|
static void GetOptionsFilePath(char *out, size_t outSize)
|
||||||
|
{
|
||||||
|
GetModuleFileNameA(NULL, out, (DWORD)outSize);
|
||||||
|
char *p = strrchr(out, '\\');
|
||||||
|
if (p) *(p + 1) = '\0';
|
||||||
|
strncat_s(out, outSize, "options.txt", _TRUNCATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SaveFullscreenOption(bool fullscreen)
|
||||||
|
{
|
||||||
|
char path[MAX_PATH];
|
||||||
|
GetOptionsFilePath(path, sizeof(path));
|
||||||
|
FILE *f = nullptr;
|
||||||
|
if (fopen_s(&f, path, "w") == 0 && f)
|
||||||
|
{
|
||||||
|
fprintf(f, "fullscreen=%d\n", fullscreen ? 1 : 0);
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool LoadFullscreenOption()
|
||||||
|
{
|
||||||
|
char path[MAX_PATH];
|
||||||
|
GetOptionsFilePath(path, sizeof(path));
|
||||||
|
FILE *f = nullptr;
|
||||||
|
if (fopen_s(&f, path, "r") == 0 && f)
|
||||||
|
{
|
||||||
|
char line[256];
|
||||||
|
while (fgets(line, sizeof(line), f))
|
||||||
|
{
|
||||||
|
int val = 0;
|
||||||
|
if (sscanf_s(line, "fullscreen=%d", &val) == 1)
|
||||||
|
{
|
||||||
|
fclose(f);
|
||||||
|
return val != 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
static void ApplyScreenMode(int screenMode)
|
static void ApplyScreenMode(int screenMode)
|
||||||
{
|
{
|
||||||
switch (screenMode)
|
switch (screenMode)
|
||||||
|
|
@ -664,7 +708,7 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowWindow(g_hWnd, nCmdShow);
|
ShowWindow(g_hWnd, (nCmdShow != SW_HIDE) ? SW_SHOWMAXIMIZED : nCmdShow);
|
||||||
UpdateWindow(g_hWnd);
|
UpdateWindow(g_hWnd);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
@ -873,6 +917,7 @@ void ToggleFullscreen()
|
||||||
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_FRAMECHANGED);
|
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_FRAMECHANGED);
|
||||||
}
|
}
|
||||||
g_isFullscreen = !g_isFullscreen;
|
g_isFullscreen = !g_isFullscreen;
|
||||||
|
SaveFullscreenOption(g_isFullscreen);
|
||||||
|
|
||||||
if (g_KBMInput.IsWindowFocused())
|
if (g_KBMInput.IsWindowFocused())
|
||||||
g_KBMInput.SetWindowFocused(true);
|
g_KBMInput.SetWindowFocused(true);
|
||||||
|
|
@ -1193,6 +1238,12 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Restore fullscreen state from previous session
|
||||||
|
if (LoadFullscreenOption() && !g_isFullscreen)
|
||||||
|
{
|
||||||
|
ToggleFullscreen();
|
||||||
|
}
|
||||||
|
|
||||||
if (launchOptions.serverMode)
|
if (launchOptions.serverMode)
|
||||||
{
|
{
|
||||||
int serverResult = RunHeadlessServer();
|
int serverResult = RunHeadlessServer();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue