aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Windows64/KeyboardMouseInput.cpp
diff options
context:
space:
mode:
authordtentiion <dtentiongit@gmail.com>2026-03-05 20:57:37 +0000
committerGitHub <noreply@github.com>2026-03-05 14:57:37 -0600
commitaadb5115040cfe0199e79a3e32dada6aa4b99fda (patch)
tree7aba2ccfc2d3361272ad0380ec69c98a4f6c3efe /Minecraft.Client/Windows64/KeyboardMouseInput.cpp
parentf48a39ae3d72fc47ed3a050f6419716dc398d8f5 (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/Windows64/KeyboardMouseInput.cpp')
-rw-r--r--Minecraft.Client/Windows64/KeyboardMouseInput.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/Minecraft.Client/Windows64/KeyboardMouseInput.cpp b/Minecraft.Client/Windows64/KeyboardMouseInput.cpp
index 6206db87..fe3c3919 100644
--- a/Minecraft.Client/Windows64/KeyboardMouseInput.cpp
+++ b/Minecraft.Client/Windows64/KeyboardMouseInput.cpp
@@ -55,6 +55,8 @@ void KeyboardMouseInput::Init()
m_hasInput = false;
m_kbmActive = true;
m_screenWantsCursorHidden = false;
+ m_charBufferHead = 0;
+ m_charBufferTail = 0;
RAWINPUTDEVICE rid;
rid.usUsagePage = 0x01; // HID_USAGE_PAGE_GENERIC
@@ -381,4 +383,29 @@ float KeyboardMouseInput::GetLookY(float sensitivity) const
return (float)(-m_mouseDeltaY) * sensitivity;
}
+void KeyboardMouseInput::OnChar(wchar_t c)
+{
+ int next = (m_charBufferHead + 1) % CHAR_BUFFER_SIZE;
+ if (next != m_charBufferTail)
+ {
+ m_charBuffer[m_charBufferHead] = c;
+ m_charBufferHead = next;
+ }
+}
+
+bool KeyboardMouseInput::ConsumeChar(wchar_t &outChar)
+{
+ if (m_charBufferTail == m_charBufferHead)
+ return false;
+ outChar = m_charBuffer[m_charBufferTail];
+ m_charBufferTail = (m_charBufferTail + 1) % CHAR_BUFFER_SIZE;
+ return true;
+}
+
+void KeyboardMouseInput::ClearCharBuffer()
+{
+ m_charBufferHead = 0;
+ m_charBufferTail = 0;
+}
+
#endif // _WINDOWS64