private IEnumerable ShowProgressCoroutine(ProgramUpdate.VersionParam versionParam, UIPanelUpdate updatePanel, ReturnTuple<ProgramUpdate.ProgramsUpdateRetcode> result) { updatePanel.sub_statusText.text = GameUpdateManager.Instance.GetString("preparing to update"); //显示下载进度 Boolean bFailed = false; String failMsg = ""; m_OnDownloadAppStateChangedEvent = (state, errorCode, errorMsg) => { if (state == (Int32)TMAssistantDownloadSDKTaskState.DownloadSDKTaskState_FAILED) { Debug.LogWarning(String.Format("DownloadApp failed, state={0}, errorCode={1}, errorMsg={2}", state, errorCode, errorMsg)); CleanupCallbacks(); failMsg = String.Format(GameUpdateManager.Instance.GetString("download error: {0}"), errorMsg); bFailed = true; } else if (state == (Int32)TMAssistantDownloadSDKTaskState.DownloadSDKTaskState_SUCCEED) { updatePanel.sub_statusText.text = GameUpdateManager.Instance.GetString("waiting for finish install"); updatePanel.sub_progress.value = 1.0f; updatePanel.sub_progressText.text = ""; } }; m_OnDownloadAppProgressChangedEvent = (receiveDataLen, totalDataLen) => { updatePanel.sub_statusText.text = GameUpdateManager.Instance.GetString("downloading installer"); updatePanel.sub_progress.value = (float)receiveDataLen / Math.Max((float)totalDataLen, 1.0f); updatePanel.sub_progressText.text = FormatProgressSize(receiveDataLen, totalDataLen); }; m_OnDownloadYYBStateChangedEvent = (url, state, errorCode, errorMsg) => { if (state == (Int32)TMAssistantDownloadSDKTaskState.DownloadSDKTaskState_FAILED) { Debug.LogWarning(String.Format("DownloadYYB failed, state={0}, errorCode={1}, errorMsg={2}", state, errorCode, errorMsg)); CleanupCallbacks(); failMsg = String.Format(GameUpdateManager.Instance.GetString("download error: {0}"), errorMsg); bFailed = true; } else if (state == (Int32)TMAssistantDownloadSDKTaskState.DownloadSDKTaskState_SUCCEED) { updatePanel.sub_statusText.text = GameUpdateManager.Instance.GetString("waiting for finish install"); updatePanel.sub_progress.value = 1.0f; updatePanel.sub_progressText.text = ""; } }; m_OnDownloadYYBProgressChangedEvent = (url, receiveDataLen, totalDataLen) => { updatePanel.sub_statusText.text = GameUpdateManager.Instance.GetString("downloading yyb"); updatePanel.sub_progress.value = (float)receiveDataLen / Math.Max((float)totalDataLen, 1.0f); updatePanel.sub_progressText.text = FormatProgressSize(receiveDataLen, totalDataLen); }; while (!bFailed) yield return null; foreach (var item in UpdateMessageBox.Pop(String.IsNullOrEmpty(failMsg) ? GameUpdateManager.Instance.GetString("update failed") : failMsg, UpdateMessageBox.MessageBoxType.None)) yield return item; yield return new WaitForSeconds(Single.MaxValue); }
private void CleanupCallbacks() { m_OnCheckNeedUpdateInfoEvent = null; m_OnDownloadAppProgressChangedEvent = null; m_OnDownloadAppStateChangedEvent = null; m_OnDownloadYYBProgressChangedEvent = null; m_OnDownloadYYBStateChangedEvent = null; }