12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- enum EConnectErrorScript
- {
- UNKNOWN = -1, // -1 must always be UNKNOWN
- OK = 0, // 0 must always be OK
-
- ALREADY_CONNECTING, // Already joining a server
- ALREADY_CONNECTING_THIS, // Already joining this exact server
- }
- class ConnectErrorScriptModule : ErrorHandlerModuleScript
- {
- void ConnectErrorScriptModule()
- {
- SetCategory(ErrorCategory.ConnectErrorScript);
- }
-
- override void InitOptionalVariables()
- {
- super.InitOptionalVariables();
-
- m_Header = "#server_browser_connecting_failed";
- #ifndef NO_GUI
- m_UIHandler = new ConnectErrorScriptModuleUI();
- #endif
- }
-
- override void FillErrorDataMap()
- {
- super.FillErrorDataMap();
-
- InsertDialogueErrorProperties(EConnectErrorScript.ALREADY_CONNECTING, "#STR_script_already_connecting", DBT_YESNOCANCEL, DBB_NO);
- InsertDialogueErrorProperties(EConnectErrorScript.ALREADY_CONNECTING_THIS, "#STR_script_already_connecting_this");
- }
-
- override void OnEvent(EventType eventTypeId, Param params)
- {
- switch (eventTypeId)
- {
- case MPSessionPlayerReadyEventTypeID:
- #ifndef NO_GUI
- g_Game.GetUIManager().CloseSpecificDialog(m_LastErrorThrown);
- #endif
- break;
-
- default:
- break;
- }
- }
- }
- class ConnectErrorScriptModuleUI : UIScriptedMenu
- {
- protected static void DisconnectSession(bool loadMpPrivilege)
- {
- g_Game.DisconnectSessionForce();
- g_Game.DisconnectSessionScript();
-
- if (loadMpPrivilege)
- {
- OnlineServices.LoadMPPrivilege();
- }
- }
-
- override bool OnModalResult(Widget w, int x, int y, int code, int result)
- {
- super.OnModalResult(w, x, y, code, result);
-
- int error = ErrorModuleHandler.GetCodeFromError(code);
- switch ( error )
- {
- case EConnectErrorScript.ALREADY_CONNECTING:
- {
- switch ( result )
- {
- case DBB_YES:
- g_Game.GetCallQueue(CALL_CATEGORY_SYSTEM).Call(DisconnectSession, true);
- break;
- case DBB_CANCEL:
- g_Game.GetCallQueue(CALL_CATEGORY_SYSTEM).Call(DisconnectSession, false);
- break;
-
- default:
- break;
- }
- break;
- }
-
- default:
- break;
- }
-
- return true;
- }
- }
|