aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/UI/UIScene_ConnectingProgress.cpp
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/Common/UI/UIScene_ConnectingProgress.cpp
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/Common/UI/UIScene_ConnectingProgress.cpp')
-rw-r--r--Minecraft.Client/Common/UI/UIScene_ConnectingProgress.cpp267
1 files changed, 267 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/UI/UIScene_ConnectingProgress.cpp b/Minecraft.Client/Common/UI/UIScene_ConnectingProgress.cpp
new file mode 100644
index 00000000..0ea99a36
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_ConnectingProgress.cpp
@@ -0,0 +1,267 @@
+#include "stdafx.h"
+#include "UI.h"
+#include "UIScene_ConnectingProgress.h"
+#include "..\..\Minecraft.h"
+
+UIScene_ConnectingProgress::UIScene_ConnectingProgress(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_progressBar.showBar(false);
+ m_progressBar.setVisible( false );
+ m_labelTip.setVisible( false );
+
+ ConnectionProgressParams *param = (ConnectionProgressParams *)_initData;
+
+ if( param->stringId >= 0 )
+ {
+ m_labelTitle.init( app.GetString( param->stringId ) );
+ }
+ else
+ {
+ m_labelTitle.init( L"" );
+ }
+ m_progressBar.init(L"",0,0,100,0);
+ m_buttonConfirm.init( app.GetString( IDS_CONFIRM_OK ), eControl_Confirm );
+ m_buttonConfirm.setVisible(false);
+
+#if 0
+ if(app.GetLocalPlayerCount()>1)
+ {
+ app.AdjustSplitscreenScene(m_hObj,&m_OriginalPosition,m_iPad,false);
+ }
+#endif
+
+ m_showTooltips = param->showTooltips;
+ m_runFailTimer = param->setFailTimer;
+ m_timerTime = param->timerTime;
+ m_cancelFunc = param->cancelFunc;
+ m_cancelFuncParam = param->cancelFuncParam;
+ m_removeLocalPlayer = false;
+ m_showingButton = false;
+}
+
+UIScene_ConnectingProgress::~UIScene_ConnectingProgress()
+{
+ m_parentLayer->removeComponent(eUIComponent_Panorama);
+ m_parentLayer->removeComponent(eUIComponent_Logo);
+}
+
+void UIScene_ConnectingProgress::updateTooltips()
+{
+ // 4J-PB - removing the option of cancel join, since it didn't work anyway
+ //ui.SetTooltips( m_iPad, -1, m_showTooltips?IDS_TOOLTIPS_CANCEL_JOIN:-1);
+ ui.SetTooltips( m_iPad, -1, -1);
+}
+
+void UIScene_ConnectingProgress::tick()
+{
+ UIScene::tick();
+
+ if( m_removeLocalPlayer )
+ {
+ m_removeLocalPlayer = false;
+
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ pMinecraft->removeLocalPlayerIdx(m_iPad);
+#ifdef _XBOX_ONE
+ ProfileManager.RemoveGamepadFromGame(m_iPad);
+#endif
+ }
+}
+
+wstring UIScene_ConnectingProgress::getMoviePath()
+{
+ if(app.GetLocalPlayerCount() > 1 && !m_parentLayer->IsFullscreenGroup())
+ {
+ return L"FullscreenProgressSplit";
+ }
+ else
+ {
+ return L"FullscreenProgress";
+ }
+}
+
+void UIScene_ConnectingProgress::handleGainFocus(bool navBack)
+{
+ UIScene::handleGainFocus(navBack);
+ if(!navBack && m_runFailTimer) addTimer(0,m_timerTime);
+}
+
+void UIScene_ConnectingProgress::handleLoseFocus()
+{
+ int millisecsLeft = getTimer(0)->targetTime - System::currentTimeMillis();
+ int millisecsTaken = getTimer(0)->duration - millisecsLeft;
+ app.DebugPrintf("\n");
+ app.DebugPrintf("---------------------------------------------------------\n");
+ app.DebugPrintf("---------------------------------------------------------\n");
+ app.DebugPrintf("UIScene_ConnectingProgress time taken = %d millisecs\n", millisecsTaken);
+ app.DebugPrintf("---------------------------------------------------------\n");
+ app.DebugPrintf("---------------------------------------------------------\n");
+ app.DebugPrintf("\n");
+
+
+ killTimer(0);
+}
+
+void UIScene_ConnectingProgress::handleTimerComplete(int id)
+{
+ // Check if the connection failed
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+
+ if( pMinecraft->m_connectionFailed[m_iPad] || !g_NetworkManager.IsInSession() )
+ {
+
+#if 0
+ app.RemoveBackScene(m_iPad);
+#endif
+
+ int exitReasonStringId;
+ switch(pMinecraft->m_connectionFailedReason[m_iPad])
+ {
+ case DisconnectPacket::eDisconnect_LoginTooLong:
+ exitReasonStringId = IDS_DISCONNECTED_LOGIN_TOO_LONG;
+ break;
+ case DisconnectPacket::eDisconnect_ServerFull:
+ exitReasonStringId = IDS_DISCONNECTED_SERVER_FULL;
+ break;
+ case DisconnectPacket::eDisconnect_Kicked:
+ exitReasonStringId = IDS_DISCONNECTED_KICKED;
+ break;
+ case DisconnectPacket::eDisconnect_NoUGC_AllLocal:
+ exitReasonStringId = IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_ALL_LOCAL;
+ break;
+ case DisconnectPacket::eDisconnect_NoUGC_Single_Local:
+ exitReasonStringId = IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_SINGLE_LOCAL;
+ break;
+#if defined(__PS3__) || defined(__ORBIS__)
+ case DisconnectPacket::eDisconnect_ContentRestricted_AllLocal:
+ exitReasonStringId = IDS_CONTENT_RESTRICTION_MULTIPLAYER;
+ break;
+ case DisconnectPacket::eDisconnect_ContentRestricted_Single_Local:
+ exitReasonStringId = IDS_CONTENT_RESTRICTION;
+ break;
+#endif
+#ifdef _XBOX
+ case DisconnectPacket::eDisconnect_NoUGC_Remote:
+ exitReasonStringId = IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_REMOTE;
+ break;
+#endif
+ case DisconnectPacket::eDisconnect_NoFlying:
+ exitReasonStringId = IDS_DISCONNECTED_FLYING;
+ break;
+ case DisconnectPacket::eDisconnect_Quitting:
+ exitReasonStringId = IDS_DISCONNECTED_SERVER_QUIT;
+ break;
+ case DisconnectPacket::eDisconnect_OutdatedServer:
+ exitReasonStringId = IDS_DISCONNECTED_SERVER_OLD;
+ break;
+ case DisconnectPacket::eDisconnect_OutdatedClient:
+ exitReasonStringId = IDS_DISCONNECTED_CLIENT_OLD;
+ break;
+#if defined __ORBIS__ || defined __PS3__ || defined __PSVITA__
+ case DisconnectPacket::eDisconnect_NATMismatch:
+ exitReasonStringId = IDS_DISCONNECTED_NAT_TYPE_MISMATCH;
+ break;
+#endif
+ default:
+ exitReasonStringId = IDS_CONNECTION_LOST_SERVER;
+ break;
+ }
+
+ if( m_iPad != ProfileManager.GetPrimaryPad() && g_NetworkManager.IsInSession() )
+ {
+ m_buttonConfirm.setVisible(true);
+ m_showingButton = true;
+
+ // Set text
+ m_labelTitle.setLabel( app.GetString( IDS_CONNECTION_FAILED ) );
+ m_progressBar.setLabel( app.GetString( exitReasonStringId ) );
+ m_progressBar.setVisible( true );
+ m_controlTimer.setVisible( false );
+ }
+ else
+ {
+ UINT uiIDA[1];
+ uiIDA[0]=IDS_CONFIRM_OK;
+ ui.RequestMessageBox( IDS_CONNECTION_FAILED, exitReasonStringId, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
+ exitReasonStringId = -1;
+
+ //app.NavigateToHomeMenu();
+ app.SetAction(ProfileManager.GetPrimaryPad(),eAppAction_ExitWorld,(void *)TRUE);
+ }
+ }
+}
+
+void UIScene_ConnectingProgress::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled)
+{
+ //app.DebugPrintf("UIScene_DebugOverlay handling input for pad %d, key %d, down- %s, pressed- %s, released- %s\n", iPad, key, down?"TRUE":"FALSE", pressed?"TRUE":"FALSE", released?"TRUE":"FALSE");
+
+ if( m_showTooltips )
+ {
+ ui.AnimateKeyPress(m_iPad, key, repeat, pressed, released);
+
+ switch(key)
+ {
+// 4J-PB - Removed the option to cancel join - it didn't work anyway
+// case ACTION_MENU_CANCEL:
+// {
+// if(m_cancelFunc != NULL)
+// {
+// m_cancelFunc(m_cancelFuncParam);
+// }
+// else
+// {
+// // Cancel the join
+// Minecraft *pMinecraft = Minecraft::GetInstance();
+// pMinecraft->removeLocalPlayerIdx(m_iPad);
+// }
+// handled = true;
+// }
+// break;
+ case ACTION_MENU_OK:
+#ifdef __ORBIS__
+ case ACTION_MENU_TOUCHPAD_PRESS:
+#endif
+ if(pressed)
+ {
+ sendInputToMovie(key, repeat, pressed, released);
+ }
+ break;
+ case ACTION_MENU_UP:
+ case ACTION_MENU_DOWN:
+ if(pressed)
+ {
+ sendInputToMovie(key, repeat, pressed, released);
+ }
+ break;
+ }
+ }
+}
+
+void UIScene_ConnectingProgress::handlePress(F64 controlId, F64 childId)
+{
+ switch((int)controlId)
+ {
+ case eControl_Confirm:
+ if(m_showingButton)
+ {
+ if( m_iPad != ProfileManager.GetPrimaryPad() && g_NetworkManager.IsInSession() )
+ {
+ // The connection failed if we see the button, so the temp player should be removed and the viewports updated again
+ // This is actually done in the tick as we can't pull down the scene we are currently in from here
+ m_removeLocalPlayer = true;
+ }
+ else
+ {
+ ui.NavigateToHomeMenu();
+ //app.NavigateBack( ProfileManager.GetPrimaryPad() );
+ }
+ }
+ break;
+ }
+}