You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.0 KiB
54 lines
1.0 KiB
11 years ago
|
using UnityEngine;
|
||
|
using System;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
|
||
|
namespace Fungus
|
||
|
{
|
||
|
// Manages a sequential list of commands.
|
||
|
// When a command completes, the next command is popped from the queue and exectuted.
|
||
|
public class CommandQueue : MonoBehaviour
|
||
|
{
|
||
|
[HideInInspector]
|
||
|
public CameraController cameraController;
|
||
|
|
||
|
public void Start()
|
||
|
{
|
||
|
cameraController = Game.GetInstance().GetComponent<CameraController>();
|
||
|
}
|
||
|
|
||
|
// Base class for commands used with the CommandQueue
|
||
|
public abstract class Command
|
||
|
{
|
||
|
public abstract void Execute(CommandQueue commandQueue, Action onComplete);
|
||
|
}
|
||
|
|
||
|
List<Command> commandList = new List<Command>();
|
||
|
|
||
|
public void AddCommand(Command command)
|
||
|
{
|
||
|
commandList.Add(command);
|
||
|
}
|
||
|
|
||
|
public void Reset()
|
||
|
{
|
||
|
StopAllCoroutines();
|
||
|
commandList.Clear();
|
||
|
}
|
||
|
|
||
|
public void Execute()
|
||
|
{
|
||
|
if (commandList.Count == 0)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
Command command = commandList[0];
|
||
|
|
||
|
command.Execute(this, delegate {
|
||
|
commandList.RemoveAt(0);
|
||
|
Execute();
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
}
|