package CharacterExport
{
	import flash.display.*;
	import flash.geom.*;
	public class PieceSequence
	{
		protected var piece:Piece;
		protected var overridePiece:Piece;
		public function GetOriginalPiece():Piece { return piece; }
		public function GetPiece():Piece { return overridePiece ? overridePiece : piece; }
		public function SetOverridePiece(p:Piece) { this.overridePiece = p; }
		
		public var Export:Boolean = true;
		
		//protected var centerPoint:Point;
		//public function get CenterPoint():Point { return centerPoint; }
		
		public function GetFrame(frame):PieceFrameInfo
		{
			if (frame < 1 || frame > frames.length) return null;
			return frames[frame - 1];
		}
		
		public function CopyTransformsFrom(other:PieceSequence, atDepth = null)
		{
			if (other.frames.length == this.frames.length)
			{
				for (var i = 0; i < frames.length; i++)
				{
					this.frames[i].Present = other.frames[i].Present;
					if (other.frames[i].Present)
					{
						this.frames[i].Transform = other.frames[i].Transform.clone();
						this.frames[i].Depth = (atDepth == null) ? other.frames[i].Depth : atDepth;
					}
				}
			}
		}
		
		protected var frames:Array = [];
		public function PieceSequence(piece:Piece, length) //, centerPoint:Point)
		{
			this.piece = piece;
			//this.centerPoint = centerPoint;
			for (var i = 0; i < length; i++)
			{
				frames.push(new PieceFrameInfo());
			}
		}
		
		// clip matching info
		public var BaseClip:DisplayObject = null;
		public var Name = null;
		
		public function CheckMatches(clip:DisplayObject)
		{
			if (BaseClip != null && clip == BaseClip) return true;
			if (Name != null && clip.name == null) return true;
			return false;
		}
	}
}