using UnityEngine;
using System.Collections;
using System.Collections.Generic;

// Returned by each active item at every frame
public enum eTickMsg
	{
	WAIT // Stay on this item. It did not finish what it was to do
	, NEXT // This item has finish what it had to do. Go to the next.
	, FAIL // Something bad append -> game over
	}

// Returned by each active item when a signal is send/received
public enum eReceiveMsg
	{
	I_DONT_CARE // The item ignore the message. If all items ignore a message -> game over
	, WAIT // I don't ignore the message, but I stay here
	, NEXT // I don't ignore the message and I am finish (go to the next item).
	, FAIL // Something bad append -> game over
	}

abstract public class Item
	{
	public abstract string getLabel();
	public abstract eTickMsg tick( TrackManager trackManager , Track track );
	public abstract eReceiveMsg receive( TrackManager trackManager , Track track, Event evt );
	}
