Beispiel #1
0
	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);
	}
Beispiel #2
0
	private void CleanupCallbacks()
	{
		m_OnCheckNeedUpdateInfoEvent = null;
		m_OnDownloadAppProgressChangedEvent = null;
		m_OnDownloadAppStateChangedEvent = null;
		m_OnDownloadYYBProgressChangedEvent = null;
		m_OnDownloadYYBStateChangedEvent = null;
	}