package {
	import flash.utils.Timer;
	import flash.events.TimerEvent;
	
	public class Dado {
		// Propriedades
		public var id:int;
		public var mc:String;
		private var timer:Timer = new Timer(50);
		private var face_atual:int = 1;
		private var face_final:int;
		
		// Constrói o objeto
		public function Dado(id:int, mc:String):void {
			this.id = id;
			this.mc = mc;
			timer.addEventListener(TimerEvent.TIMER, mudar_face);
			timer.addEventListener(TimerEvent.TIMER_COMPLETE, mostrar_face_final);
		}
		
		// Joga o dado pelo tempo pedido e depois mostra a face desejada
		public function jogar(tempo:int, face:int):void {
			timer.reset();
			timer.repeatCount = Math.floor((tempo+1)/timer.delay)+1;
			timer.start();
			face_final = face;
		}
		
		// Muda a face do dado. A próxima face não pode ser a mesma nem sua oposta
		private function mudar_face(evento:TimerEvent):void {
			var nova:int;
			do {
				nova = Math.floor(Math.random()*6)+1;
			} while (nova == face_atual || nova+face_atual==7);
			face_atual = nova;
			Grafica.root[mc].gotoAndStop(face_atual);
		}
		
		// Mostra a face final
		private function mostrar_face_final(evento:TimerEvent):void {
			Grafica.root[mc].gotoAndStop(face_final);
			face_atual = face_final;
		}
	}
}