Files
cafeberry/Minecraft.Client/Windows64/Windows64_App.cpp
T

236 lines
8.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "stdafx.h"
#include "Windows64_Minecraft.h"
#include "..\Common\Consoles_App.h"
#include "..\User.h"
#include "..\..\Minecraft.Client\Minecraft.h"
#include "..\..\Minecraft.Client\MinecraftServer.h"
#include "..\..\Minecraft.Client\PlayerList.h"
#include "..\..\Minecraft.Client\ServerPlayer.h"
#include "..\..\Minecraft.World\Level.h"
#include "..\..\Minecraft.World\LevelSettings.h"
#include "..\..\Minecraft.World\BiomeSource.h"
#include "..\..\Minecraft.World\LevelType.h"
CConsoleMinecraftApp app;
CConsoleMinecraftApp::CConsoleMinecraftApp() : CMinecraftApp()
{
}
void CConsoleMinecraftApp::SetRichPresenceContext(int iPad, int contextId)
{
ProfileManager.SetRichPresenceContextValue(iPad,CONTEXT_GAME_STATE,contextId);
}
void CConsoleMinecraftApp::StoreLaunchData()
{
}
void CConsoleMinecraftApp::ExitGame()
{
app.DebugPrintf("CConsoleMinecraftApp::ExitGame\n");
//str1k3r - since ExitGame is always ran by the user, it should always be 0
PostQuitMessage(0);
}
void CConsoleMinecraftApp::FatalLoadError()
{
//str1k3r - very much inspired by the PS3 FatalLoadError :3
wchar_t *aStrings[2];
app.DebugPrintf("CConsoleMinecraftApp::FatalLoadError\n");
switch (XGetLanguage())
{
case XC_LANGUAGE_GERMAN:
aStrings[0] = L"Ladefehler";
aStrings[1] = L"Minecraft: Cafeberry Edition konnte nicht geladen werden und kann daher nicht fortgesetzt werden.";
break;
case XC_LANGUAGE_SPANISH:
aStrings[0] = L"Error al cargar";
aStrings[1] = L"Se ha producido un error al cargar Minecraft: Cafeberry Edition y no es posible continuar.";
break;
case XC_LANGUAGE_FRENCH:
aStrings[0] = L"Échec du chargement";
aStrings[1] = L"Le chargement de Minecraft: Cafeberry Edition a échoué : impossible de continuer.";
break;
case XC_LANGUAGE_ITALIAN:
aStrings[0] = L"Errore caricamento";
aStrings[1] = L"Caricamento Minecraft: Cafeberry Edition non riuscito, impossibile continuare.";
break;
case XC_LANGUAGE_JAPANESE:
aStrings[0] = L"ロード エラー";
aStrings[1] = L"Minecraft Cafeberry 版のロードに失敗しました。続行できません";
break;
case XC_LANGUAGE_KOREAN:
aStrings[0] = L"불러오기 오류";
aStrings[1] = L"Minecraft: Cafeberry Edition 을 불러오는 중에 오류가 발생하여 계속할 수 없습니다.";
break;
case XC_LANGUAGE_PORTUGUESE:
aStrings[0] = L"Erro de Carregamento";
aStrings[1] = L"Não foi possível carregar Minecraft: Cafeberry Edition e não é possível continuar.";
break;
case XC_LANGUAGE_RUSSIAN:
aStrings[0] = L"Ошибка при загрузке";
aStrings[1] = L"Не удалось загрузить игру Minecraft: Cafeberry Edition. Продолжить загрузку невозможно.";
break;
case XC_LANGUAGE_TCHINESE:
aStrings[0] = L"載入錯誤";
aStrings[1] = L"無法載入「Minecraft: Cafeberry Edition」,因此無法繼續。";
break;
case XC_LANGUAGE_DUTCH:
aStrings[0] = L"Fout tijdens het laden";
aStrings[1] = L"Minecraft: Cafeberry Edition kan niet worden geladen.";
break;
case XC_LANGUAGE_FINISH:
aStrings[0] = L"Latausvirhe";
aStrings[1] = L"Minecraft: Cafeberry Edition -pelin lataaminen ei onnistunut, eikä sitä voi jatkaa.";
break;
case XC_LANGUAGE_SWEDISH:
aStrings[0] = L"Laddningsfel";
aStrings[1] = L"Minecraft: Cafeberry Edition kunde inte laddas och kan inte fortsätta.";
break;
case XC_LANGUAGE_DANISH:
aStrings[0] = L"Indlæsningsfejl";
aStrings[1] = L"Minecraft: Cafeberry Edition kunne ikke blive indlæst og kan derfor ikke fortsætte.";
break;
case XC_LANGUAGE_BNORWEGIAN:
aStrings[0] = L"Innlastingsfeil";
aStrings[1] = L"Feil under innlasting av Minecraft: Cafeberry Edition. Kan ikke fortsette.";
break;
case XC_LANGUAGE_POLISH:
aStrings[0] = L"Błąd wczytywania";
aStrings[1] = L"Wystąpił błąd podczas wczytywania Minecraft: Edycja Cafeberry. Dalsze działanie jest niemożliwe.";
break;
case XC_LANGUAGE_TURKISH:
aStrings[0] = L"Yükleme Hatası";
aStrings[1] = L"Minecraft: Cafeberry Edition yüklenemedi ve devam edemiyor.";
break;
case XC_LOCALE_LATIN_AMERICA:
aStrings[0] = L"Error al cargar";
aStrings[1] = L"Se produjo un error al cargar Minecraft: Cafeberry Edition y no es posible continuar.";
break;
default:
aStrings[0] = L"Loading Error";
aStrings[1] = L"Minecraft: Cafeberry Edition has failed to load, and cannot continue.";
break;
}
//str1k3r - yes, i made them all say femboy edition (piebot said no :c)
int result = MessageBoxW(
NULL,
aStrings[1],
aStrings[0],
MB_OK
);
if (result == IDOK) {
ExitGame();
}
}
void CConsoleMinecraftApp::CaptureSaveThumbnail()
{
RenderManager.CaptureThumbnail(&m_ThumbnailBuffer);
}
void CConsoleMinecraftApp::GetSaveThumbnail(PBYTE *pbData,DWORD *pdwSize)
{
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();
}
}
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)
{
}
std::wstring CConsoleMinecraftApp::UTF8ToWide(const char* utf8)
{
int size = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, nullptr, 0);
std::wstring wstr(size, 0);
MultiByteToWideChar(CP_UTF8, 0, utf8, -1, &wstr[0], size);
wstr.resize(size - 1);
return wstr;
}