Ejemplo n.º 1
0
 /// <summary>
 ///	呼び出し元のシーンに戻る
 /// </summary>
 ///	このときに、pushSceneでスタック上にシーンが積まれていれば、
 ///	そちらを実体化する。
 public void ReturnScene()
 {
     PopTask();
     if (taskNameList.Count != 0)
     {
         TaskName name = PopTaskName();
         TaskBase task = TaskFactory.CreateTask(name);
         taskList.Add(task);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// popTaskするときにシーンタスクがIDisposableメンバであれば、
        /// Disposeを呼び出すことをここで保証する。
        /// </summary>
        private void PopTask()
        {
            if (taskList.Count == 0)
            {
                return;
            }
            TaskBase    t = taskList[taskList.Count - 1];
            IDisposable d = t as IDisposable;

            if (d != null)
            {
                d.Dispose();
            }
            taskList.RemoveAt(taskList.Count - 1);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <remarks>
        /// TaskBaseからのオーバーライド
        /// </remarks>
        /// <param name="o"></param>
        /// <returns></returns>
        public override int Task(object o)
        {
            if (End)
            {
                return(1);
            }

            TaskBase task = NowTask;

            if (task == null)
            {
                //	タスクがすべて終了しているので
                //	次に予約されているタスクを生成して実行しなければならない。
                TaskName name = PopTaskName();
                // isEndをfalse通過しているわけでstacklist.length!=0

                task = TaskFactory.CreateTask(name);
                taskList.Add(task);
            }
            task.Task(o);
            return(0);
        }
Ejemplo n.º 4
0
        /// <summary>
        ///	他のシーンを呼び出す(現在実行中のタスク自体は破棄しない)
        /// </summary>
        /// <remarks>
        ///	現在実行中のシーン破棄はされません。
        ///	ただし、task関数のなかでは(現在実行中のシーンへreturnSceneなどで
        ///	制御が戻ってくるまでは)呼び出されなくなります。
        ///	</remarks>
        /// <param name="nPriority"></param>
        public void CallScene(TaskName name)
        {
            TaskBase task = TaskFactory.CreateTask(name);

            taskList.Add(task);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// 生成したタスクをタスクリストに登録する。
 /// </summary>
 /// <param name="Task"></param>
 /// <param name="Priority"></param>
 /// <returns></returns>
 /// <remarks>
 /// <para>
 /// new したCTaskControlBase派生クラスを渡してチョ
 /// プライオリティは、タスクの優先度。0だと一番優先順位が高い。
 /// 万が一に備えてマイナスの値を渡しても良いようにはなっている。
 /// </para>
 /// </remarks>
 public void AddTask(TaskBase task, int priority)
 {
     // 正しい位置にinsertしなくてはならない
     AddTask(new Task(task, priority));
 }
Ejemplo n.º 6
0
 public Task(TaskBase task, int priority)
 {
     this.TaskBase     = task;
     this.Priority     = priority;
     this.NextPriority = priority;
 }