aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Windows64/Windows64_App.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.Client/Windows64/Windows64_App.cpp')
-rw-r--r--Minecraft.Client/Windows64/Windows64_App.cpp57
1 files changed, 55 insertions, 2 deletions
diff --git a/Minecraft.Client/Windows64/Windows64_App.cpp b/Minecraft.Client/Windows64/Windows64_App.cpp
index dbc1bfc5..461e8c34 100644
--- a/Minecraft.Client/Windows64/Windows64_App.cpp
+++ b/Minecraft.Client/Windows64/Windows64_App.cpp
@@ -10,11 +10,46 @@
#include "..\..\Minecraft.World\BiomeSource.h"
#include "..\..\Minecraft.World\LevelType.h"
+wstring g_playerName;
+
CConsoleMinecraftApp app;
+static void LoadPlayerName()
+{
+ if (!g_playerName.empty()) return;
+ g_playerName = L"Windows";
+
+ char exePath[MAX_PATH] = {};
+ GetModuleFileNameA(NULL, exePath, MAX_PATH);
+ char *lastSlash = strrchr(exePath, '\\');
+ if (lastSlash) *(lastSlash + 1) = '\0';
+ char filePath[MAX_PATH] = {};
+ _snprintf_s(filePath, sizeof(filePath), _TRUNCATE, "%susername.txt", exePath);
+
+ FILE *f = NULL;
+ if (fopen_s(&f, filePath, "r") == 0 && f)
+ {
+ char buf[128] = {};
+ if (fgets(buf, sizeof(buf), f))
+ {
+ int len = (int)strlen(buf);
+ while (len > 0 && (buf[len-1] == '\n' || buf[len-1] == '\r' || buf[len-1] == ' '))
+ buf[--len] = '\0';
+ if (len > 0)
+ {
+ wchar_t wbuf[128] = {};
+ mbstowcs(wbuf, buf, 127);
+ g_playerName = wbuf;
+ }
+ }
+ fclose(f);
+ }
+}
+
CConsoleMinecraftApp::CConsoleMinecraftApp() : CMinecraftApp()
{
m_bShutdown = false;
+ LoadPlayerName();
}
void CConsoleMinecraftApp::SetRichPresenceContext(int iPad, int contextId)
@@ -35,9 +70,27 @@ void CConsoleMinecraftApp::FatalLoadError()
void CConsoleMinecraftApp::CaptureSaveThumbnail()
{
+ RenderManager.CaptureThumbnail(&m_ThumbnailBuffer);
}
void CConsoleMinecraftApp::GetSaveThumbnail(PBYTE *pbData,DWORD *pdwSize)
{
+ // On a save caused by a create world, the thumbnail capture won't have happened
+ if (m_ThumbnailBuffer.Allocated())
+ {
+ if (pbData)
+ {
+ *pbData = new BYTE[m_ThumbnailBuffer.GetBufferSize()];
+ *pdwSize = m_ThumbnailBuffer.GetBufferSize();
+ memcpy(*pbData, m_ThumbnailBuffer.GetBufferPointer(), *pdwSize);
+ }
+ m_ThumbnailBuffer.Release();
+ }
+ else
+ {
+ // No capture happened (e.g. first save on world creation) leave thumbnail as NULL
+ if (pbData) *pbData = NULL;
+ if (pdwSize) *pdwSize = 0;
+ }
}
void CConsoleMinecraftApp::ReleaseSaveThumbnail()
{
@@ -57,8 +110,8 @@ void CConsoleMinecraftApp::TemporaryCreateGameStart()
Minecraft *pMinecraft=Minecraft::GetInstance();
app.ReleaseSaveThumbnail();
ProfileManager.SetLockedProfile(0);
- extern wchar_t g_Win64UsernameW[17];
- pMinecraft->user->name = g_Win64UsernameW;
+ LoadPlayerName();
+ pMinecraft->user->name = g_playerName;
app.ApplyGameSettingsChanged(0);
////////////////////////////////////////////////////////////////////////////////////////////// From CScene_MultiGameJoinLoad::OnInit