diff options
| author | dtentiion <dtentiongit@gmail.com> | 2026-03-05 20:57:37 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-05 14:57:37 -0600 |
| commit | aadb5115040cfe0199e79a3e32dada6aa4b99fda (patch) | |
| tree | 7aba2ccfc2d3361272ad0380ec69c98a4f6c3efe /Minecraft.Client/Common/UI/UIStructs.h | |
| parent | f48a39ae3d72fc47ed3a050f6419716dc398d8f5 (diff) | |
Fix save list, delete save, exit without saving, and blank username on Windows64 (#539)
* Fix world save rename not applying new name
KeyboardCompleteWorldNameCallback had no _WINDOWS64 branch, so the
typed name was validated then silently discarded on every rename attempt.
Write the new name to a worldname.txt sidecar file next to the save
(Windows64\GameHDD\{folder}\worldname.txt) and update the in-memory
display name immediately. ReadLevelNameFromSaveFile now checks for this
sidecar first so renamed saves persist correctly across restarts.
* Fixed gamertag being blank upon renaming and re-joining a save
* Save deletion fix, exiting without saving fix
* Add native in-game keyboard UI for world naming and renaming
Diffstat (limited to 'Minecraft.Client/Common/UI/UIStructs.h')
| -rw-r--r-- | Minecraft.Client/Common/UI/UIStructs.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/UI/UIStructs.h b/Minecraft.Client/Common/UI/UIStructs.h index c41f2276..ac83458f 100644 --- a/Minecraft.Client/Common/UI/UIStructs.h +++ b/Minecraft.Client/Common/UI/UIStructs.h @@ -282,6 +282,44 @@ typedef struct _JoinMenuInitData int iPad; } JoinMenuInitData; +// Native keyboard (Windows64 replacement for InputManager.RequestKeyboard WinAPI dialog) +#ifdef _WINDOWS64 +typedef struct _UIKeyboardInitData +{ + const wchar_t* title; + const wchar_t* defaultText; + int maxChars; + int(*callback)(LPVOID, const bool); + LPVOID lpParam; + bool pcMode; // When true, disables on-screen keyboard buttons (PC keyboard users only need the text field) + + _UIKeyboardInitData() : title(nullptr), defaultText(nullptr), maxChars(25), callback(nullptr), lpParam(nullptr), pcMode(false) {} +} UIKeyboardInitData; + +// Stores the text typed in UIScene_Keyboard so callbacks can retrieve it +// without calling InputManager.GetText (which shows the WinAPI dialog result). +extern wchar_t g_Win64KeyboardResult[256]; +inline void Win64_GetKeyboardText(uint16_t* outBuf, int maxChars) +{ + wcsncpy_s((wchar_t*)outBuf, maxChars, g_Win64KeyboardResult, _TRUNCATE); +} + +// Returns true if any XInput controller is currently connected. +// Used to decide whether to show the in-game keyboard UI or fall back to PC input. +#include <Xinput.h> +inline bool Win64_IsControllerConnected() +{ + XINPUT_STATE state; + for (DWORD i = 0; i < XUSER_MAX_COUNT; i++) + { + memset(&state, 0, sizeof(state)); + if (XInputGetState(i, &state) == ERROR_SUCCESS) + return true; + } + return false; +} +#endif // _WINDOWS64 + // More Options typedef struct _LaunchMoreOptionsMenuInitData { |
