diff --git a/Minecraft.Client/Windows64/Windows64_App.cpp b/Minecraft.Client/Windows64/Windows64_App.cpp index bd9ed1df..578ce1f1 100644 --- a/Minecraft.Client/Windows64/Windows64_App.cpp +++ b/Minecraft.Client/Windows64/Windows64_App.cpp @@ -25,6 +25,7 @@ void CConsoleMinecraftApp::SetRichPresenceContext(int iPad, int contextId) void CConsoleMinecraftApp::StoreLaunchData() { } + void CConsoleMinecraftApp::ExitGame() { if (g_pd3dDevice != NULL) @@ -37,14 +38,27 @@ void CConsoleMinecraftApp::ExitGame() ExitProcess(0); } + void CConsoleMinecraftApp::FatalLoadError() { + //str1k3r very much inspired by the PS3 FatalLoadError :3 + int result = MessageBoxW( + NULL, + L"Minecraft: Femboy Edition has failed to load, and cannot continue.", + L"Loading Error", + MB_OK | MB_ICONERROR + ); + + if (result == IDOK) { + ExitGame(); + } } void CConsoleMinecraftApp::CaptureSaveThumbnail() { RenderManager.CaptureThumbnail(&m_ThumbnailBuffer); } + void CConsoleMinecraftApp::GetSaveThumbnail(PBYTE *pbData,DWORD *pdwSize) { if (m_ThumbnailBuffer.Allocated()) @@ -58,10 +72,79 @@ void CConsoleMinecraftApp::GetSaveThumbnail(PBYTE *pbData,DWORD *pdwSize) m_ThumbnailBuffer.Release(); } } + void CConsoleMinecraftApp::ReleaseSaveThumbnail() { } +void CConsoleMinecraftApp::TemporaryCreateGameStart() +{ + ////////////////////////////////////////////////////////////////////////////////////////////// From CScene_Main::OnInit + + app.setLevelGenerationOptions(NULL); + + // From CScene_Main::RunPlayGame + Minecraft *pMinecraft=Minecraft::GetInstance(); + app.ReleaseSaveThumbnail(); + ProfileManager.SetLockedProfile(0); + pMinecraft->user->name = L"Windows64"; + app.ApplyGameSettingsChanged(0); + + ////////////////////////////////////////////////////////////////////////////////////////////// From CScene_MultiGameJoinLoad::OnInit + MinecraftServer::resetFlags(); + + // From CScene_MultiGameJoinLoad::OnNotifyPressEx + app.SetTutorialMode( false ); + app.SetCorruptSaveDeleted(false); + + ////////////////////////////////////////////////////////////////////////////////////////////// From CScene_MultiGameCreate::CreateGame + + app.ClearTerrainFeaturePosition(); + wstring wWorldName = L"TestWorld"; + + StorageManager.ResetSaveData(); + StorageManager.SetSaveTitle(wWorldName.c_str()); + + bool isFlat = false; + __int64 seedValue = 0; // BiomeSource::findSeed(isFlat?LevelType::lvl_flat:LevelType::lvl_normal); // 4J - was (new Random())->nextLong() - now trying to actually find a seed to suit our requirements + + NetworkGameInitData *param = new NetworkGameInitData(); + param->seed = seedValue; + param->saveData = NULL; + + app.SetGameHostOption(eGameHostOption_Difficulty,0); + app.SetGameHostOption(eGameHostOption_FriendsOfFriends,0); + app.SetGameHostOption(eGameHostOption_Gamertags,1); + app.SetGameHostOption(eGameHostOption_BedrockFog,1); + + app.SetGameHostOption(eGameHostOption_GameType,GameType::CREATIVE->getId() ); // LevelSettings::GAMETYPE_SURVIVAL + app.SetGameHostOption(eGameHostOption_LevelType, 0 ); + app.SetGameHostOption(eGameHostOption_Structures, 1 ); + app.SetGameHostOption(eGameHostOption_BonusChest, 0 ); + + app.SetGameHostOption(eGameHostOption_PvP, 1); + app.SetGameHostOption(eGameHostOption_TrustPlayers, 1 ); + app.SetGameHostOption(eGameHostOption_FireSpreads, 1 ); + app.SetGameHostOption(eGameHostOption_TNT, 1 ); + app.SetGameHostOption(eGameHostOption_HostCanFly, 1); + app.SetGameHostOption(eGameHostOption_HostCanChangeHunger, 1); + app.SetGameHostOption(eGameHostOption_HostCanBeInvisible, 1 ); + + param->settings = app.GetGameHostOption( eGameHostOption_All ); + + g_NetworkManager.FakeLocalPlayerJoined(); + + LoadingInputParams *loadingParams = new LoadingInputParams(); + loadingParams->func = &CGameNetworkManager::RunNetworkGameThreadProc; + loadingParams->lpParam = (LPVOID)param; + + // Reset the autosave time + app.SetAutosaveTimerTime(); + + C4JThread* thread = new C4JThread(loadingParams->func, loadingParams->lpParam, "RunNetworkGame"); + thread->Run(); +} + void CConsoleMinecraftApp::GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize) { } diff --git a/Minecraft.Client/Windows64/Windows64_App.h b/Minecraft.Client/Windows64/Windows64_App.h index 2b25f0dc..9e948f79 100644 --- a/Minecraft.Client/Windows64/Windows64_App.h +++ b/Minecraft.Client/Windows64/Windows64_App.h @@ -23,6 +23,8 @@ public: C4JStringTable *GetStringTable() { return NULL;} + virtual void TemporaryCreateGameStart(); + // str1k3r - UTF8 to wchar std::wstring UTF8ToWide(const char* utf8); }; diff --git a/Minecraft.Client/Windows64/Windows64_Minecraft.cpp b/Minecraft.Client/Windows64/Windows64_Minecraft.cpp index c1b0ed97..056557b4 100644 --- a/Minecraft.Client/Windows64/Windows64_Minecraft.cpp +++ b/Minecraft.Client/Windows64/Windows64_Minecraft.cpp @@ -312,6 +312,7 @@ void MemPixStuff(); #else void MemSect(int sect) { + //str1k3r - i feel like something should go here, i just dont know what } #endif @@ -703,6 +704,9 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); + //str1k3r - tell windows that we are aware of high DPI displays + SetProcessDPIAware(); + Windows64LaunchArgs launchArgs = ParseLaunchArgs(); if(launchArgs.resolution != 0)