feat: 8th gen autosave on windows64

This commit is contained in:
2026-08-15 17:13:03 -04:00
parent 1a903c65dc
commit f30aa4fcf1
13 changed files with 883 additions and 862 deletions
+3 -3
View File
@@ -3614,7 +3614,7 @@ int ClientConnection::HostDisconnectReturned(void *pParam,int iPad,C4JStorage::E
}
}
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
// Give the player the option to save their game
// does the save exist?
bool bSaveExists;
@@ -3646,7 +3646,7 @@ int ClientConnection::HostDisconnectReturned(void *pParam,int iPad,C4JStorage::E
else
#endif
{
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
StorageManager.SetSaveDisabled(false);
#endif
MinecraftServer::getInstance()->setSaveOnExit( true );
@@ -3665,7 +3665,7 @@ int ClientConnection::ExitGameAndSaveReturned(void *pParam,int iPad,C4JStorage::
//INT saveOrCheckpointId = 0;
//bool validSave = StorageManager.GetSaveUniqueNumber(&saveOrCheckpointId);
//SentientManager.RecordLevelSaveOrCheckpoint(ProfileManager.GetPrimaryPad(), saveOrCheckpointId);
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
StorageManager.SetSaveDisabled(false);
#endif
MinecraftServer::getInstance()->setSaveOnExit( true );
+7 -5
View File
@@ -766,6 +766,8 @@ void CMinecraftApp::InitGameSettings()
// 4J-PB - adding in for Windows & PS3 to set the defaults for the joypad
#if defined _WINDOWS64// || defined __PSVITA__
C_4JProfile::PROFILESETTINGS *pProfileSettings=ProfileManager.GetDashboardProfileSettings(i);
//str1k3r - Temporary
app.SetGameHostOption(eGameHostOption_DisableSaving, 0);
// clear this for now - it will come from reading the system values
memset(pProfileSettings,0,sizeof(C_4JProfile::PROFILESETTINGS));
SetDefaultOptions(pProfileSettings,i);
@@ -2780,7 +2782,7 @@ void CMinecraftApp::HandleXuiActions(void)
app.SetAutosaveTimerTime();
SetAction(i,eAppAction_Idle);
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
app.SetXuiServerAction(ProfileManager.GetPrimaryPad(),eXuiServerAction_AutoSaveGame);
if(app.GetGameHostOption(eGameHostOption_DisableSaving)) StorageManager.SetSaveDisabled(true);
@@ -3567,7 +3569,7 @@ void CMinecraftApp::HandleXuiActions(void)
SetAction(i,eAppAction_Idle);
// Check the player really wants to do this
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
// Show save option is saves ARE disabled
if(ProfileManager.IsFullVersion() && StorageManager.GetSaveDisabled() && i==ProfileManager.GetPrimaryPad() && g_NetworkManager.IsHost() && GetGameStarted() )
{
@@ -5936,7 +5938,7 @@ int CMinecraftApp::ExitAndJoinFromInviteSaveDialogReturned(void *pParam,int iPad
else
#endif
{
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
StorageManager.SetSaveDisabled(false);
#endif
MinecraftServer::getInstance()->setSaveOnExit( true );
@@ -6139,7 +6141,7 @@ int CMinecraftApp::ExitAndJoinFromInviteDeclineSaveReturned(void *pParam,int iPa
// results switched for this dialog
if(result==C4JStorage::EMessage_ResultDecline)
{
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
StorageManager.SetSaveDisabled(false);
#endif
MinecraftServer::getInstance()->setSaveOnExit( false );
@@ -9460,7 +9462,7 @@ int CMinecraftApp::GetDLCInfoTexturesOffersCount()
// AUTOSAVE
void CMinecraftApp::SetAutosaveTimerTime(void)
{
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
m_uiAutosaveTimer= GetTickCount()+1000*60;
#else
m_uiAutosaveTimer= GetTickCount()+GetGameSettings(ProfileManager.GetPrimaryPad(),eGameSetting_Autosave)*1000*60*15;
@@ -94,7 +94,7 @@ int IUIScene_PauseMenu::ExitGameSaveDialogReturned(void *pParam,int iPad,C4JStor
}
else
{
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
StorageManager.SetSaveDisabled(false);
#endif
MinecraftServer::getInstance()->setSaveOnExit( true );
@@ -133,7 +133,7 @@ int IUIScene_PauseMenu::ExitGameAndSaveReturned(void *pParam,int iPad,C4JStorage
//INT saveOrCheckpointId = 0;
//bool validSave = StorageManager.GetSaveUniqueNumber(&saveOrCheckpointId);
//SentientManager.RecordLevelSaveOrCheckpoint(ProfileManager.GetPrimaryPad(), saveOrCheckpointId);
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
StorageManager.SetSaveDisabled(false);
#endif
if(pScene) pScene->SetIgnoreInput(true);
@@ -178,7 +178,7 @@ int IUIScene_PauseMenu::ExitGameDeclineSaveReturned(void *pParam,int iPad,C4JSto
// results switched for this dialog
if(result==C4JStorage::EMessage_ResultDecline)
{
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
// Don't do this here, as it will still try and save some things even though it shouldn't!
//StorageManager.SetSaveDisabled(false);
#endif
@@ -381,7 +381,7 @@ int IUIScene_PauseMenu::SaveWorldThreadProc( LPVOID lpParameter )
if(!MinecraftServer::serverHalted() && !app.GetChangingSessionType() ) app.SetGameStarted(true);
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
if(app.GetGameHostOption(eGameHostOption_DisableSaving)) StorageManager.SetSaveDisabled(true);
#endif
}
@@ -647,7 +647,7 @@ void IUIScene_PauseMenu::_ExitWorld(LPVOID lpParameter)
app.SetChangingSessionType(false);
app.SetReallyChangingSessionType(false);
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
// Make sure we don't think saving is disabled in the menus
StorageManager.SetSaveDisabled(false);
#endif
@@ -659,7 +659,7 @@ int IUIScene_PauseMenu::SaveGameDialogReturned(void *pParam,int iPad,C4JStorage:
// results switched for this dialog
if(result==C4JStorage::EMessage_ResultDecline)
{
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
@@ -597,7 +597,7 @@ void UIScene_CreateWorldMenu::StartSharedLaunchFlow()
}
}
}
#if defined _XBOX_ONE || defined __ORBIS__
#if defined _XBOX_ONE || defined __ORBIS__ || defined(_WINDOWS64)
app.SetGameHostOption(eGameHostOption_DisableSaving, m_MoreOptionsParams.bDisableSaving?1:0);
StorageManager.SetSaveDisabled(m_MoreOptionsParams.bDisableSaving);
#endif
@@ -110,7 +110,7 @@ void UIScene_DeathMenu::handlePress(F64 controlId, F64 childId)
}
TelemetryManager->RecordLevelExit(m_iPad, eSen_LevelExitStatus_Failed);
#if defined (_XBOX_ONE) || defined(__ORBIS__)
#if defined (_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
if(g_NetworkManager.IsHost() && StorageManager.GetSaveDisabled())
{
uiIDA[0]=IDS_CONFIRM_CANCEL;
@@ -866,7 +866,7 @@ void UIScene_LoadMenu::StartSharedLaunchFlow()
ui.RequestAlertMessage(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_USING_TRIAL_TEXUREPACK_WARNING, uiIDA, 2, m_iPad,&TrialTexturePackWarningReturned,this);
#endif
#if defined _XBOX_ONE || defined __ORBIS__
#if defined _XBOX_ONE || defined __ORBIS__ || defined(_WINDOWS64)
StorageManager.SetSaveDisabled(true);
#endif
return;
@@ -875,7 +875,7 @@ void UIScene_LoadMenu::StartSharedLaunchFlow()
}
app.SetGameHostOption(eGameHostOption_WasntSaveOwner, (!m_bIsSaveOwner));
#if defined _XBOX_ONE || defined __ORBIS__
#if defined _XBOX_ONE || defined __ORBIS__ || defined(_WINDOWS64)
app.SetGameHostOption(eGameHostOption_DisableSaving, m_MoreOptionsParams.bDisableSaving?1:0);
StorageManager.SetSaveDisabled(m_MoreOptionsParams.bDisableSaving);
@@ -38,7 +38,7 @@ UIScene_PauseMenu::UIScene_PauseMenu(int iPad, void *initData, UILayer *parentLa
#else
m_buttons[BUTTON_PAUSE_ACHIEVEMENTS].init(app.GetString(IDS_ACHIEVEMENTS),BUTTON_PAUSE_ACHIEVEMENTS);
#endif
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
m_bTrialTexturePack = false;
if(!Minecraft::GetInstance()->skins->isUsingDefaultSkin())
{
@@ -149,7 +149,7 @@ void UIScene_PauseMenu::tick()
#endif
#if defined _XBOX_ONE || defined __ORBIS__
#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
if(!m_bTrialTexturePack && m_savesDisabled != (app.GetGameHostOption(eGameHostOption_DisableSaving) != 0) && ProfileManager.GetPrimaryPad() == m_iPad )
{
// We show the save button if saves are disabled as this lets us show a prompt to enable them (via purchasing a texture pack)
@@ -239,7 +239,7 @@ void UIScene_PauseMenu::updateComponents()
void UIScene_PauseMenu::handlePreReload()
{
#if defined _XBOX_ONE || defined __ORBIS__
#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
if(ProfileManager.GetPrimaryPad() == m_iPad)
{
// 4J-TomK - check for all possible labels being fed into BUTTON_PAUSE_SAVEGAME (Bug 163775)
@@ -257,7 +257,7 @@ void UIScene_PauseMenu::handleReload()
updateTooltips();
updateControlsVisibility();
#if defined _XBOX_ONE || defined __ORBIS__
#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
if(ProfileManager.GetPrimaryPad() == m_iPad)
{
// We show the save button if saves are disabled as this lets us show a prompt to enable them (via purchasing a texture pack)
@@ -659,7 +659,7 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
playTime = (int)pMinecraft->localplayers[m_iPad]->getSessionTimer();
}
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
@@ -893,7 +893,7 @@ void UIScene_PauseMenu::PerformActionSaveGame()
else
#endif
{
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
if(!m_savesDisabled)
{
UINT uiIDA[2];
@@ -913,7 +913,7 @@ void UIScene_PauseMenu::PerformActionSaveGame()
}
else
{
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
@@ -1402,7 +1402,7 @@ int UIScene_PauseMenu::ExitGameSaveDialogReturned(void *pParam,int iPad,C4JStora
}
else
{
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
StorageManager.SetSaveDisabled(false);
#endif
MinecraftServer::getInstance()->setSaveOnExit( true );
@@ -68,7 +68,7 @@ UIScene_SettingsOptionsMenu::UIScene_SettingsOptionsMenu(int iPad, void *initDat
m_sliderAutosave.setAllPossibleLabels(9,autosaveLabels);
m_sliderAutosave.init(autosaveLabels[ucValue],eControl_Autosave,0,8,ucValue);
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
removeControl(&m_sliderAutosave,true);
#endif
@@ -291,7 +291,7 @@ void UIScene_SettingsOptionsMenu::handleReload()
m_sliderAutosave.setAllPossibleLabels(9,autosaveLabels);
m_sliderAutosave.init(autosaveLabels[ucValue],eControl_Autosave,0,8,ucValue);
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
removeControl(&m_sliderAutosave,true);
#endif
+2 -2
View File
@@ -998,7 +998,7 @@ void MinecraftServer::stopServer(bool didInit)
if((m_bPrimaryPlayerSignedOut==false) && ProfileManager.IsSignedIn(ProfileManager.GetPrimaryPad()))
#endif
{
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
// Always save on exit! Except if saves are disabled.
if(!saveOnExitAnswered()) m_saveOnExit = true;
#endif
@@ -1354,7 +1354,7 @@ void MinecraftServer::run(__int64 seed, void *lpParameter)
switch(eAction)
{
case eXuiServerAction_AutoSaveGame:
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
{
PIXBeginNamedEvent(0,"Autosave");
+1 -1
View File
@@ -983,7 +983,7 @@ void ServerLevel::save(bool force, ProgressListener *progressListener, bool bAut
if (progressListener != NULL) progressListener->progressStage(IDS_PROGRESS_SAVING_CHUNKS);
#if defined(_XBOX_ONE) || defined(__ORBIS__)
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(_WINDOWS64)
// Our autosave is a minimal save. All the chunks are saves by the constant save process
if(bAutosave)
{
@@ -5753,9 +5753,13 @@ Press{*CONTROLLER_VK_B*} if you already know about Fireworks.</value>
<data name="IDS_CORRUPT_OR_DAMAGED_SAVE_TEXT">
<value>This save is corrupt or damaged. Would you like to delete it?</value>
</data>
</data>
<data name="IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT_SAVE">
<data name="IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT">
<value>Are you sure you want to exit to the main menu?</value>
</data>
<data name="IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT_SAVE">
<value>Are you sure you want to exit to the main menu and disconnect all players from the game? Any unsaved progress will be lost.</value>
</data>
@@ -273,11 +273,20 @@ If you try to save while using the trial version, you will be given the option t
<data name="IDS_GAMEOPTION_WORLD_SIZE">
<value>Select a world size to vary the amount of the world that you can explore.</value>
</data>
<data name="IDS_DISABLE_SAVING">
<data name="IDS_TITLE_ENABLE_AUTOSAVE">
<value>Enable autosave</value>
</data>
<data name="IDS_CONFIRM_ENABLE_AUTOSAVE">
<value>Would you like to enable the constant, automatic saving of the world?</value>
</data>
<data name="IDS_DISABLE_AUTOSAVE">
<value>Disable Autosave</value>
</data>
<data name="IDS_TITLE_DISABLE_AUTOSAVE">
<value>Disable autosave</value>
</data>
<data name="IDS_GAMEOPTION_DISABLE_SAVING">
<value>Turn off the constant, automatic saving of the world. If you later choose to save it could take a long time.</value>
<data name="IDS_CONFIRM_DISABLE_AUTOSAVE">
<value>Are you sure you want to disable the constant, automatic saving of the world?</value>
</data>
<data name="IDS_ERROR_NETWORK">
File diff suppressed because it is too large Load Diff