From ae75d007b44ffbdeb1c7177af804ad6fa907bb13 Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期一, 20 八月 2018 19:44:37 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
---
System/WindowBase/WindowAsyncLoad.cs | 420 +++++++++++++++++++++++++++++++----------------------------
1 files changed, 219 insertions(+), 201 deletions(-)
diff --git a/System/WindowBase/WindowAsyncLoad.cs b/System/WindowBase/WindowAsyncLoad.cs
index a3eeade..28a7e99 100644
--- a/System/WindowBase/WindowAsyncLoad.cs
+++ b/System/WindowBase/WindowAsyncLoad.cs
@@ -1,201 +1,219 @@
-锘�//--------------------------------------------------------
-// [Author]: 绗簩涓栫晫
-// [ Date ]: Tuesday, September 26, 2017
-//--------------------------------------------------------
-using UnityEngine;
-using System.Collections;
-using UnityEngine.UI;
-using System.Collections.Generic;
-using System;
-using System.Reflection;
-
-namespace Snxxz.UI
-{
-
- public class WindowAsyncLoad : MonoBehaviour
- {
- List<Task> taskQueue = new List<Task>();
- Task currentTask;
-
- public bool busy { get { return currentTask != null; } }
-
- public void PushTask(Task _task)
- {
- var exist = false;
- for (int i = taskQueue.Count - 1; i >= 0; i--)
- {
- var task = taskQueue[i];
- if (task.windowName == _task.windowName)
- {
- exist = true;
- break;
- }
- }
-
- if (!exist)
- {
- taskQueue.Add(_task);
- }
- }
-
- public void StopTask(string _name)
- {
- for (int i = taskQueue.Count - 1; i >= 0; i--)
- {
- var task = taskQueue[i];
- if (task.windowName == _name)
- {
- taskQueue.Remove(task);
- break;
- }
- }
-
- if (currentTask != null && currentTask.windowName == _name)
- {
- currentTask.Dispose();
- currentTask = null;
- NetLinkWin.Hide();
- }
- }
-
- public void StopAllTasks()
- {
- if (currentTask != null)
- {
- currentTask.Dispose();
- currentTask = null;
- }
-
- taskQueue.Clear();
- NetLinkWin.Hide();
- }
-
- private void LateUpdate()
- {
- if (currentTask == null && taskQueue.Count > 0)
- {
- currentTask = taskQueue[0];
- taskQueue.RemoveAt(0);
- if (currentTask.windowName != "NetLinkWin")
- {
- NetLinkWin.Show(0.5f);
- }
-
- UILoader.LoadWindowAsync(currentTask.windowName, (bool ok, UnityEngine.Object _resource) =>
- {
- try
- {
- if (currentTask != null)
- {
- currentTask.Report(ok, _resource);
- currentTask = null;
- }
- }
- catch (Exception ex)
- {
- DesignDebug.Log(ex);
- }
- finally
- {
- NetLinkWin.Hide();
- }
- });
- }
-
- }
-
- public class TaskGroup
- {
- List<Task> tasks = new List<Task>();
-
- public void AddTask(Task _task)
- {
- if (!tasks.Contains(_task))
- {
- tasks.Add(_task);
- }
- }
-
- public void NotifyTaskState(Task _task)
- {
- bool allReady = true;
- for (int i = 0; i < tasks.Count; i++)
- {
- if (!tasks[i].ready)
- {
- allReady = false;
- break;
- }
- }
-
- if (allReady)
- {
- for (int i = 0; i < tasks.Count; i++)
- {
- tasks[i].Done();
- }
- }
- }
-
- }
-
- public class Task
- {
- public TaskGroup taskGroup { get; private set; }
- public string windowName { get; private set; }
- public bool ready = false;
-
- Action<bool, UnityEngine.Object> callBack;
- bool result = false;
- UnityEngine.Object asset;
-
- public Task(string _windowName, Action<bool, UnityEngine.Object> _callBack)
- {
- windowName = _windowName;
- callBack = _callBack;
- }
-
- public void Bind(TaskGroup _task)
- {
- taskGroup = _task;
- }
-
- public void Report(bool _ok, UnityEngine.Object _object)
- {
- result = _ok;
- asset = _object;
-
- if (taskGroup != null)
- {
- ready = true;
- taskGroup.NotifyTaskState(this);
- }
- else
- {
- Done();
- }
- }
-
- public void Dispose()
- {
- callBack = null;
- }
-
- public void Done()
- {
- if (callBack != null)
- {
- callBack(result, asset);
- callBack = null;
- }
- }
-
-
- }
-
- }
-
-}
-
-
-
+锘�//--------------------------------------------------------
+// [Author]: 绗簩涓栫晫
+// [ Date ]: Tuesday, September 26, 2017
+//--------------------------------------------------------
+using UnityEngine;
+using System.Collections;
+using UnityEngine.UI;
+using System.Collections.Generic;
+using System;
+using System.Reflection;
+
+namespace Snxxz.UI
+{
+
+ public class WindowAsyncLoad : MonoBehaviour
+ {
+ List<Task> taskQueue = new List<Task>();
+ Task currentTask;
+
+ public bool busy { get { return currentTask != null; } }
+
+ public void PushTask(Task _task)
+ {
+ var exist = false;
+ for (int i = taskQueue.Count - 1; i >= 0; i--)
+ {
+ var task = taskQueue[i];
+ if (task.windowName == _task.windowName)
+ {
+ exist = true;
+ break;
+ }
+ }
+
+ if (!exist)
+ {
+ taskQueue.Add(_task);
+ }
+ }
+
+ public void StopTask(string _name)
+ {
+ for (int i = taskQueue.Count - 1; i >= 0; i--)
+ {
+ var task = taskQueue[i];
+ if (task.windowName == _name)
+ {
+ task.Dispose();
+ taskQueue.Remove(task);
+ break;
+ }
+ }
+
+ if (currentTask != null && currentTask.windowName == _name)
+ {
+ currentTask.Dispose();
+ currentTask = null;
+ NetLinkWin.Hide();
+ }
+ }
+
+ public void StopAllTasks()
+ {
+ if (currentTask != null)
+ {
+ currentTask.Dispose();
+ currentTask = null;
+ }
+
+ for (int i = 0; i < taskQueue.Count; i++)
+ {
+ var task = taskQueue[i];
+ task.Dispose();
+ }
+ taskQueue.Clear();
+ NetLinkWin.Hide();
+ }
+
+ private void LateUpdate()
+ {
+ if (currentTask == null && taskQueue.Count > 0)
+ {
+ currentTask = taskQueue[0];
+ taskQueue.RemoveAt(0);
+ if (currentTask.windowName != "NetLinkWin")
+ {
+ NetLinkWin.Show(0.5f);
+ }
+
+ UILoader.LoadWindowAsync(currentTask.windowName, (bool ok, UnityEngine.Object _resource) =>
+ {
+ try
+ {
+ if (currentTask != null)
+ {
+ currentTask.Report(ok, _resource);
+ currentTask = null;
+ }
+ }
+ catch (Exception ex)
+ {
+ DebugEx.Log(ex);
+ }
+ finally
+ {
+ NetLinkWin.Hide();
+ }
+ });
+ }
+
+ }
+
+ public class TaskGroup
+ {
+ List<Task> tasks = new List<Task>();
+
+ public void AddTask(Task _task)
+ {
+ if (!tasks.Contains(_task))
+ {
+ tasks.Add(_task);
+ }
+ }
+
+ public void RemoveTask(Task _task)
+ {
+ if (tasks.Contains(_task))
+ {
+ tasks.Remove(_task);
+ }
+ }
+
+ public void NotifyTaskState(Task _task)
+ {
+ bool allReady = true;
+ for (int i = 0; i < tasks.Count; i++)
+ {
+ if (!tasks[i].ready)
+ {
+ allReady = false;
+ break;
+ }
+ }
+
+ if (allReady)
+ {
+ for (int i = 0; i < tasks.Count; i++)
+ {
+ tasks[i].Done();
+ }
+ }
+ }
+
+ }
+
+ public class Task
+ {
+ public TaskGroup taskGroup { get; private set; }
+ public string windowName { get; private set; }
+ public bool ready = false;
+
+ Action<bool, UnityEngine.Object> callBack;
+ bool result = false;
+ UnityEngine.Object asset;
+
+ public Task(string _windowName, Action<bool, UnityEngine.Object> _callBack)
+ {
+ windowName = _windowName;
+ callBack = _callBack;
+ }
+
+ public void Bind(TaskGroup _taskGroup)
+ {
+ taskGroup = _taskGroup;
+ }
+
+ public void Report(bool _ok, UnityEngine.Object _object)
+ {
+ result = _ok;
+ asset = _object;
+
+ if (taskGroup != null)
+ {
+ ready = true;
+ taskGroup.NotifyTaskState(this);
+ }
+ else
+ {
+ Done();
+ }
+ }
+
+ public void Dispose()
+ {
+ callBack = null;
+ if (taskGroup != null)
+ {
+ taskGroup.RemoveTask(this);
+ }
+ }
+
+ public void Done()
+ {
+ if (callBack != null)
+ {
+ callBack(result, asset);
+ callBack = null;
+ }
+ }
+
+
+ }
+
+ }
+
+}
+
+
+
--
Gitblit v1.8.0