mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-25 15:03:37 +00:00
186 lines
6.6 KiB
C++
186 lines
6.6 KiB
C++
#include "../../Minecraft.World/Platform/stdafx.h"
|
|
#include "UI.h"
|
|
#include "UIScene_SaveMessage.h"
|
|
|
|
#define PROFILE_LOADED_TIMER_ID 0
|
|
#define PROFILE_LOADED_TIMER_TIME 50
|
|
|
|
UIScene_SaveMessage::UIScene_SaveMessage(int iPad, void* initData,
|
|
UILayer* parentLayer)
|
|
: UIScene(iPad, parentLayer) {
|
|
// Setup all the Iggy references we need for this scene
|
|
initialiseMovie();
|
|
|
|
parentLayer->addComponent(iPad, eUIComponent_Panorama);
|
|
parentLayer->addComponent(iPad, eUIComponent_Logo);
|
|
|
|
m_buttonConfirm.init(app.GetString(IDS_CONFIRM_OK), eControl_Confirm);
|
|
m_labelDescription.init(app.GetString(IDS_SAVE_ICON_MESSAGE));
|
|
|
|
IggyDataValue result;
|
|
|
|
// Russian needs to resize the box
|
|
IggyResult out = IggyPlayerCallMethodRS(getMovie(), &result,
|
|
IggyPlayerRootPath(getMovie()),
|
|
m_funcAutoResize, 0, NULL);
|
|
|
|
// 4J-PB - If we have a signed in user connected, let's get the DLC now
|
|
for (unsigned int i = 0; i < XUSER_MAX_COUNT; ++i) {
|
|
if ((InputManager.IsPadConnected(i) || ProfileManager.IsSignedIn(i))) {
|
|
if (!app.DLCInstallProcessCompleted() && !app.DLCInstallPending()) {
|
|
app.StartInstallDLCProcess(i);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
m_bIgnoreInput = false;
|
|
|
|
// 4J-TomK - rebuild touch after auto resize
|
|
#ifdef __PSVITA__
|
|
ui.TouchBoxRebuild(this);
|
|
#endif
|
|
}
|
|
|
|
UIScene_SaveMessage::~UIScene_SaveMessage() {
|
|
m_parentLayer->removeComponent(eUIComponent_Panorama);
|
|
m_parentLayer->removeComponent(eUIComponent_Logo);
|
|
}
|
|
|
|
std::wstring UIScene_SaveMessage::getMoviePath() { return L"SaveMessage"; }
|
|
|
|
void UIScene_SaveMessage::updateTooltips() {
|
|
ui.SetTooltips(DEFAULT_XUI_MENU_USER, IDS_TOOLTIPS_SELECT);
|
|
}
|
|
|
|
void UIScene_SaveMessage::handleInput(int iPad, int key, bool repeat,
|
|
bool pressed, bool released,
|
|
bool& handled) {
|
|
if (m_bIgnoreInput) return;
|
|
#if defined(__ORBIS__) || defined(__PSVITA__)
|
|
// ignore all players except player 0 - it's their profile that is currently
|
|
// being used
|
|
if (iPad != 0) return;
|
|
#endif
|
|
|
|
ui.AnimateKeyPress(m_iPad, key, repeat, pressed, released);
|
|
|
|
switch (key) {
|
|
case ACTION_MENU_OK:
|
|
#ifdef __ORBIS__
|
|
case ACTION_MENU_TOUCHPAD_PRESS:
|
|
#endif
|
|
sendInputToMovie(key, repeat, pressed, released);
|
|
break;
|
|
// #ifdef __PS3__
|
|
// case ACTION_MENU_Y:
|
|
// if(pressed)
|
|
// {
|
|
// // language select - switch to Greek for now
|
|
// if(app.GetMinecraftLanguage(iPad)==MINECRAFT_LANGUAGE_DEFAULT)
|
|
// {
|
|
// app.SetMinecraftLanguage(iPad,MINECRAFT_LANGUAGE_GREEK);
|
|
// }
|
|
// else
|
|
// {
|
|
// app.SetMinecraftLanguage(iPad,MINECRAFT_LANGUAGE_DEFAULT);
|
|
// }
|
|
// // reload the string table
|
|
// ui.SetupFont();
|
|
// app.loadStringTable();
|
|
// handleReload();
|
|
// }
|
|
// break;
|
|
// #endif
|
|
}
|
|
}
|
|
|
|
void UIScene_SaveMessage::handlePress(F64 controlId, F64 childId) {
|
|
switch ((int)controlId) {
|
|
case eControl_Confirm:
|
|
|
|
// CD - Added for audio
|
|
ui.PlayUISFX(eSFX_Press);
|
|
|
|
m_bIgnoreInput = true;
|
|
|
|
#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
|
|
// wait for the profile to be read - this has been kicked off
|
|
// earlier, so should be read by now
|
|
addTimer(PROFILE_LOADED_TIMER_ID, PROFILE_LOADED_TIMER_TIME);
|
|
#else
|
|
ui.NavigateToHomeMenu();
|
|
#endif
|
|
break;
|
|
};
|
|
}
|
|
|
|
void UIScene_SaveMessage::handleTimerComplete(int id) {
|
|
switch (id) {
|
|
case PROFILE_LOADED_TIMER_ID: {
|
|
#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
|
|
C4JStorage::eOptionsCallback eStatus =
|
|
app.GetOptionsCallbackStatus(0);
|
|
|
|
switch (eStatus) {
|
|
case C4JStorage::eOptions_Callback_Read:
|
|
case C4JStorage::eOptions_Callback_Read_FileNotFound:
|
|
case C4JStorage::eOptions_Callback_Read_Fail:
|
|
#ifdef __PSVITA__
|
|
case C4JStorage::eOptions_Callback_Write_Fail:
|
|
case C4JStorage::eOptions_Callback_Write:
|
|
#endif
|
|
// set defaults - which has already been done
|
|
killTimer(PROFILE_LOADED_TIMER_ID);
|
|
ui.NavigateToHomeMenu();
|
|
SQRNetworkManager::SafeToRespondToGameBootInvite();
|
|
app.SetOptionsCallbackStatus(
|
|
0, C4JStorage::eOptions_Callback_Idle);
|
|
break;
|
|
case C4JStorage::eOptions_Callback_Read_CorruptDeleted:
|
|
killTimer(PROFILE_LOADED_TIMER_ID);
|
|
ui.NavigateToHomeMenu();
|
|
SQRNetworkManager::SafeToRespondToGameBootInvite();
|
|
app.SetOptionsCallbackStatus(
|
|
0, C4JStorage::eOptions_Callback_Idle);
|
|
break;
|
|
case C4JStorage::eOptions_Callback_Read_Corrupt:
|
|
// get the user to delete the options file
|
|
app.DebugPrintf("Corrupt options file\n");
|
|
app.SetOptionsCallbackStatus(
|
|
0, C4JStorage::
|
|
eOptions_Callback_Read_CorruptDeletePending);
|
|
m_bIgnoreInput = false;
|
|
// give the option to delete the save
|
|
unsigned int uiIDA[1];
|
|
uiIDA[0] = IDS_CORRUPT_OPTIONS_RETRY;
|
|
uiIDA[1] = IDS_CORRUPT_OPTIONS_DELETE;
|
|
ui.RequestErrorMessage(
|
|
IDS_CORRUPT_FILE, IDS_CORRUPT_OPTIONS, uiIDA, 2, 0,
|
|
&UIScene_SaveMessage::DeleteOptionsDialogReturned,
|
|
this);
|
|
break;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
|
|
int UIScene_SaveMessage::DeleteOptionsDialogReturned(
|
|
void* pParam, int iPad, C4JStorage::EMessageResult result) {
|
|
// UIScene_SaveMessage* pClass = (UIScene_SaveMessage*)pParam;
|
|
if (result == C4JStorage::EMessage_ResultAccept) {
|
|
// retry loading the options file
|
|
StorageManager.ReadFromProfile(iPad);
|
|
} else // result == EMessage_ResultDecline
|
|
{
|
|
// kick off the delete
|
|
StorageManager.DeleteOptionsData(iPad);
|
|
}
|
|
return 0;
|
|
}
|
|
#endif
|