From 581f9ce1714ca40cbd8e715884475589fa3fee74 Mon Sep 17 00:00:00 2001 From: chrisgregan Date: Thu, 31 Mar 2016 14:46:28 +0100 Subject: [PATCH] Move TaskManager to Fungus namespace --- .../Resources/Types/RegisterTypes.txt | 2 +- .../Thirdparty/TaskManager/TaskManager.cs | 314 +++++++++--------- 2 files changed, 161 insertions(+), 155 deletions(-) diff --git a/Assets/Fungus/FungusScript/Resources/Types/RegisterTypes.txt b/Assets/Fungus/FungusScript/Resources/Types/RegisterTypes.txt index b02dbdc4..0a0e9324 100644 --- a/Assets/Fungus/FungusScript/Resources/Types/RegisterTypes.txt +++ b/Assets/Fungus/FungusScript/Resources/Types/RegisterTypes.txt @@ -21,6 +21,7 @@ Fungus.PortraitState, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicK Fungus.SayDialog, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null Fungus.SpriteVariable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null Fungus.StringVariable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +Fungus.Task, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null Fungus.TextureVariable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null Fungus.TransformVariable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null Fungus.Variable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null @@ -34,7 +35,6 @@ System.IntPtr, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c System.Single, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Type, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 -Task, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null UnityEngine.AudioClip, UnityEngine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null UnityEngine.AudioClipLoadType, UnityEngine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null UnityEngine.AudioDataLoadState, UnityEngine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null diff --git a/Assets/Fungus/FungusScript/Thirdparty/TaskManager/TaskManager.cs b/Assets/Fungus/FungusScript/Thirdparty/TaskManager/TaskManager.cs index 9574bf27..d9869197 100644 --- a/Assets/Fungus/FungusScript/Thirdparty/TaskManager/TaskManager.cs +++ b/Assets/Fungus/FungusScript/Thirdparty/TaskManager/TaskManager.cs @@ -56,159 +56,165 @@ using UnityEngine; using System.Collections; -/// A Task object represents a coroutine. Tasks can be started, paused, and stopped. -/// It is an error to attempt to start a task that has been stopped or which has -/// naturally terminated. -public class Task +// Using the Fungus namespace to minimize conflicts with other assets. +namespace Fungus { - /// Returns true if and only if the coroutine is running. Paused tasks - /// are considered to be running. - public bool Running { - get { - return task.Running; - } - } - - /// Returns true if and only if the coroutine is currently paused. - public bool Paused { - get { - return task.Paused; - } - } - - /// Delegate for termination subscribers. manual is true if and only if - /// the coroutine was stopped with an explicit call to Stop(). - public delegate void FinishedHandler(bool manual); - - /// Termination event. Triggered when the coroutine completes execution. - public event FinishedHandler Finished; - - /// Creates a new Task object for the given coroutine. - /// - /// If autoStart is true (default) the task is automatically started - /// upon construction. - public Task(IEnumerator c, bool autoStart = true) - { - task = TaskManager.CreateTask(c); - task.Finished += TaskFinished; - if(autoStart) - Start(); - } - - /// Begins execution of the coroutine - public void Start() - { - task.Start(); - } - - /// Discontinues execution of the coroutine at its next yield. - public void Stop() - { - task.Stop(); - } - - public void Pause() - { - task.Pause(); - } - - public void Unpause() - { - task.Unpause(); - } - - void TaskFinished(bool manual) - { - FinishedHandler handler = Finished; - if(handler != null) - handler(manual); - } - - TaskManager.TaskState task; -} - -class TaskManager : MonoBehaviour -{ - public class TaskState - { - public bool Running { - get { - return running; - } - } - - public bool Paused { - get { - return paused; - } - } - - public delegate void FinishedHandler(bool manual); - public event FinishedHandler Finished; - - IEnumerator coroutine; - bool running; - bool paused; - bool stopped; - - public TaskState(IEnumerator c) - { - coroutine = c; - } - - public void Pause() - { - paused = true; - } - - public void Unpause() - { - paused = false; - } - - public void Start() - { - running = true; - singleton.StartCoroutine(CallWrapper()); - } - - public void Stop() - { - stopped = true; - running = false; - } - - IEnumerator CallWrapper() - { - yield return null; - IEnumerator e = coroutine; - while(running) { - if(paused) - yield return null; - else { - if(e != null && e.MoveNext()) { - yield return e.Current; - } - else { - running = false; - } - } - } - - FinishedHandler handler = Finished; - if(handler != null) - handler(stopped); - } - } - - static TaskManager singleton; - - public static TaskState CreateTask(IEnumerator coroutine) - { - if(singleton == null) { - GameObject go = new GameObject("TaskManager"); - singleton = go.AddComponent(); - } - return new TaskState(coroutine); - } + + /// A Task object represents a coroutine. Tasks can be started, paused, and stopped. + /// It is an error to attempt to start a task that has been stopped or which has + /// naturally terminated. + public class Task + { + /// Returns true if and only if the coroutine is running. Paused tasks + /// are considered to be running. + public bool Running { + get { + return task.Running; + } + } + + /// Returns true if and only if the coroutine is currently paused. + public bool Paused { + get { + return task.Paused; + } + } + + /// Delegate for termination subscribers. manual is true if and only if + /// the coroutine was stopped with an explicit call to Stop(). + public delegate void FinishedHandler(bool manual); + + /// Termination event. Triggered when the coroutine completes execution. + public event FinishedHandler Finished; + + /// Creates a new Task object for the given coroutine. + /// + /// If autoStart is true (default) the task is automatically started + /// upon construction. + public Task(IEnumerator c, bool autoStart = true) + { + task = TaskManager.CreateTask(c); + task.Finished += TaskFinished; + if(autoStart) + Start(); + } + + /// Begins execution of the coroutine + public void Start() + { + task.Start(); + } + + /// Discontinues execution of the coroutine at its next yield. + public void Stop() + { + task.Stop(); + } + + public void Pause() + { + task.Pause(); + } + + public void Unpause() + { + task.Unpause(); + } + + void TaskFinished(bool manual) + { + FinishedHandler handler = Finished; + if(handler != null) + handler(manual); + } + + TaskManager.TaskState task; + } + + class TaskManager : MonoBehaviour + { + public class TaskState + { + public bool Running { + get { + return running; + } + } + + public bool Paused { + get { + return paused; + } + } + + public delegate void FinishedHandler(bool manual); + public event FinishedHandler Finished; + + IEnumerator coroutine; + bool running; + bool paused; + bool stopped; + + public TaskState(IEnumerator c) + { + coroutine = c; + } + + public void Pause() + { + paused = true; + } + + public void Unpause() + { + paused = false; + } + + public void Start() + { + running = true; + singleton.StartCoroutine(CallWrapper()); + } + + public void Stop() + { + stopped = true; + running = false; + } + + IEnumerator CallWrapper() + { + yield return null; + IEnumerator e = coroutine; + while(running) { + if(paused) + yield return null; + else { + if(e != null && e.MoveNext()) { + yield return e.Current; + } + else { + running = false; + } + } + } + + FinishedHandler handler = Finished; + if(handler != null) + handler(stopped); + } + } + + static TaskManager singleton; + + public static TaskState CreateTask(IEnumerator coroutine) + { + if(singleton == null) { + GameObject go = new GameObject("TaskManager"); + singleton = go.AddComponent(); + } + return new TaskState(coroutine); + } + } + } \ No newline at end of file