forked from cafeberry/cafeberry
236 lines
8.2 KiB
C++
236 lines
8.2 KiB
C++
#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;
|
||
}
|