FinalScript.cs 10.1 KB
//Log Dir         http://docs.unity3d.com/Manual/LogFiles.html
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
using System.Runtime.InteropServices;


public class FinalScript : MonoBehaviour {

	[DllImport ("CorePlugin")] public static extern int coreInitialize();
	[DllImport ("CorePlugin")] private static extern IntPtr coreExecute();
	[DllImport ("CorePlugin")] public static extern int coreFinalize();

	//public string hover;

	public Texture
		play, stop,
		fast, slow,
		box, menu,
		captions, captionsActive, captionsInactive,
		resize, resolucao,
		settings, settingsActive, settingsInactive;

	public float initVarX, initVarY;
	public float hSliderValue;

	Boolean isSettingsActive = false;
	Boolean isCaptionsActive = true;

	string alfabeto = "0123456789,ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	string stringPre; string[] stringPos;
	string aniName = ""; AnimationClip aniClip;


	string GetCurrentPlayingAnimationClip( ){

		if(isCaptionsActive){

			foreach(AnimationState anim in GetComponent<Animation>()){

				//Debug.Log(anim.name);

				if( GetComponent<Animation>().IsPlaying( anim.name ) ){

					if(anim.name.Split(' ')[0].Equals("_default"))
						return null;

					return anim.name.Split(' ')[0];
					//	return anim.name.Split(' ');

				}

			}//foreach

		}

		return null;

	}

	void loadIcons(){

		captions =  (Texture) Resources.Load("buttons/Subtitle", typeof(Texture));
		play =	 	(Texture) Resources.Load("buttons/Play", typeof(Texture));
		stop = 		(Texture) Resources.Load("buttons/Stop", typeof(Texture));
		fast = 		(Texture) Resources.Load("buttons/Fast", typeof(Texture));
		slow = 		(Texture) Resources.Load("buttons/Slow", typeof(Texture));

		settings = (Texture) Resources.Load("buttons/Settings", typeof(Texture));
		settingsActive = (Texture) Resources.Load("buttons/SettingsActive", typeof(Texture));
		settingsInactive = (Texture) Resources.Load("buttons/Settings", typeof(Texture));

		box = (Texture)  Resources.Load("buttons/_Barra", typeof(Texture));

		menu = (Texture)  Resources.Load("buttons/MenuConfig", typeof(Texture));
		captions = (Texture)  Resources.Load("buttons/Subtitle", typeof(Texture));
		resize = (Texture)  Resources.Load("buttons/Resolution", typeof(Texture));
		resolucao = (Texture)  Resources.Load("buttons/Resolucao", typeof(Texture));
		captionsActive = (Texture)  Resources.Load("buttons/CaptionsActive", typeof(Texture));
		captionsInactive = (Texture)  Resources.Load("buttons/CaptionsInactive", typeof(Texture));

		initVarX = ((Screen.width/2)-(box.width/2));
		initVarY = ((Screen.height)-(box.height)-10);

	}

	void Start( ){

		hSliderValue = 1.5f;
		loadIcons();
		addAlpha( );
		Debug.Log("Inicializando: "+coreInitialize( ));

	}

	void addAlpha( ){

		foreach( char letter in alfabeto ){

			aniClip = Resources.Load<AnimationClip> ("alpha/"+letter);
			if( aniClip ) GetComponent<Animation>().AddClip(aniClip, ""+letter);
			else Debug.Log("Anim "+aniName+" not found");

		}

	}//addAlpha



	void animStop( ){

		GetComponent<Animation>().Stop( );
		aniClip = Resources.Load<AnimationClip>("ANIMS/anims/_default");
		GetComponent<Animation>().CrossFadeQueued("_default", 0.6F, QueueMode.CompleteOthers, PlayMode.StopAll );

	}


	void updateGuiElements(){

		initVarX = ((Screen.width/2)-(box.width/2));
		initVarY = ((Screen.height)-(box.height)-10);

	}

	void Update( ){

		//		if( hover == "play" ) Debug.Log( hover );

		updateGuiElements();
		foreach(AnimationState anim in GetComponent<Animation>()) anim.speed = hSliderValue;

	}


	public string glosa; public void catchGlosa(){

		glosa = " _default "+Marshal.PtrToStringAnsi ( coreExecute( ) )+" _default ";
		//glosa = " _default "+"ABRIL ACADEMIA ABACATE ABAJUR"+" _default ";

	}

	void playFromDLL(){

		Debug.Log("ReadFromDLL");
		Debug.Log( "Running on "+Application.platform ); //if( Application.platform == RuntimePlatform.OS )

		animStop();

		catchGlosa( );
		stringPos = glosa.Split(' ');

		foreach( string aniName in stringPos ){
			aniClip = Resources.Load<AnimationClip>("anims/"+aniName);

			if( aniClip ){

				GetComponent<Animation>().AddClip(aniClip, aniName);
				GetComponent<Animation>().CrossFadeQueued( aniName, 0.6F, QueueMode.CompleteOthers );//0.4
				GetComponent<Animation>().RemoveClip( aniName );

			}else
				foreach(char letter in aniName)
					GetComponent<Animation>().CrossFadeQueued(""+letter, 0.6F, QueueMode.CompleteOthers);

		}//foreach string aniName

		aniClip = Resources.Load<AnimationClip>("anims/_default");
		GetComponent<Animation>().AddClip(aniClip, "_default");


	}


	void playFromFile(){ Debug.Log("ReadFromFile");// ClearConsole();

		//while( GetComponent<Queue>() != null)
		//	GetComponent<Queue>().Dequeue();
		//GetComponent<Queue>().Clear();
		//GetComponent<Animation>().CrossFadeQueued( PlayMode.StopAll );

		GetComponent<Animation>().Stop( );



		stringPre =
			" _default "
				//+"ABRIL ACADEMIA"
				+glosa
				+" _default ";

		stringPos = stringPre.Split(' ');

		foreach( string aniName in stringPos ){

			aniClip = Resources.Load<AnimationClip>("anims/"+aniName);

			if( aniClip ){

				GetComponent<Animation>().AddClip(aniClip, aniName);
				GetComponent<Animation>().CrossFadeQueued( aniName, 0.6F, QueueMode.CompleteOthers );//0.4

				GetComponent<Animation>().RemoveClip( aniName );

			}else
				foreach(char letter in aniName)
					GetComponent<Animation>().CrossFadeQueued(""+letter, 0.6F, QueueMode.CompleteOthers);

		}//foreach string aniName

		aniClip = Resources.Load<AnimationClip>("anims/_default");
		GetComponent<Animation>().AddClip(aniClip, "_default");

	}



	void OnGUI() { /* GUI.backgroundColor = Color.clear; */
		/* Box onde ficarao os botoes; */ GUI.Box( new Rect ( initVarX, initVarY, box.width, box.height), box, "" );





		if( GUI.Button (new Rect(initVarX+(box.height/4)+10 , initVarY+(play.width/2), play.width, play.height), new GUIContent("",  play, "play"), "" )){

			//playFromFile();
			playFromDLL();

		}


		//glosa = GUI.TextArea ( new Rect (10, 10,400, 100), glosa, 400);

		//hover = GUI.tooltip;



		if( GUI.Button ( new Rect( initVarX+(box.height)+15, initVarY+(stop.width/2), stop.height, stop.height ), stop, "" ) )
			animStop( );



		{ //INIT_SPEED

			GUI.DrawTexture(new Rect( initVarX+(box.height)*2, initVarY+(slow.width/2), slow.height, slow.height ), slow);

			hSliderValue = GUI.HorizontalSlider ( new Rect( initVarX+(box.height)*2+(slow.width), initVarY+(slow.width/2)+(slow.width/3), box.height*3, box.height/4 ), hSliderValue, 0.0F, 2.0F );

			GUI.DrawTexture(new Rect( initVarX+(box.height)*5+(slow.width), initVarY+(fast.width/2), fast.height, fast.height ), fast);

		} //FINISH_SPEED






		/**
		*
		* BOTAO DE LEGENDA
		*
		**/
		if (GUI.Button(new Rect(initVarX+(box.height)*6+15, initVarY+(slow.width/2), settings.width, settings.height), captions, "")){

			isCaptionsActive = !isCaptionsActive;

		}


		/**
		*
		* BOTAO DE CONFIGURAÇOES
		*
		**/
		if (GUI.Button(new Rect(initVarX+(box.height)*7, initVarY+(slow.width/2), settings.width, settings.height), settings, "")){

			isSettingsActive = !isSettingsActive;

			if(isSettingsActive) settings = settingsActive;
			else settings = settingsInactive;

		}

		if(isSettingsActive){

			GUI.Box(new Rect(initVarX+(box.height)*6, initVarY-menu.width, menu.width, menu.height), menu, "");

			GUI.Button ( new Rect( initVarX+(box.height)*6+10, initVarY-captions.width-20, captions.width, captions.height ), captions, "" );

			if( isCaptionsActive ){
				if( GUI.Button ( new Rect( initVarX+(box.height)*6+50, initVarY-captions.width-10, captionsActive.width, captionsActive.height ), captionsActive, "" ) ){
					isCaptionsActive = !isCaptionsActive;
				}
			}else{
				if( GUI.Button ( new Rect( initVarX+(box.height)*6+50, initVarY-captions.width-10, captionsInactive.width, captionsInactive.height ), captionsInactive, "" )){
					isCaptionsActive = !isCaptionsActive;
				}
			}


			//if( GUI.Button ( new Rect( 10, 10, resize.width, resize.height ), resize, "" ) ){
			GUI.Button ( new Rect( initVarX+(box.height)*6+resize.width+20, (initVarY-captions.width*2-45+(resolucao.height)), resolucao.width, resolucao.height ), resolucao, "" );
			if( GUI.Button ( new Rect( initVarX+(box.height)*6+10, (initVarY-captions.width*2-40), resize.width, resize.height ), resize, "" ) ){

				switch(Screen.width){

				case 640:
					Screen.SetResolution(800, 600, false);  break;
				case 800:
					Screen.SetResolution(1024, 768, false);  break;
				case 1024:
					Screen.SetResolution(640, 480, false);  break;
				default:
					Screen.SetResolution(640, 480, false);  break;

				}

				//initVarX = ((Screen.width/2)-(box.width/2));
				//initVarY = ((Screen.height)-(box.height)-10);

			}


		}






		{ //INIT_CAPTIONS

			GUIStyle myLabelStyle = new GUIStyle(GUI.skin.label);
			myLabelStyle.fontSize = 30;
			myLabelStyle.alignment = TextAnchor.UpperCenter;


			ShadowAndOutline.DrawOutline( new Rect(0, initVarY-35, Screen.width, Screen.height), GetCurrentPlayingAnimationClip( ), myLabelStyle, Color.black, Color.yellow, 3);

		} //FINISH_CAPTIONS



		/*

		if( GUI.Button ( new Rect( 10, 10, 100, 100 ), "DEBUGGER" ) ){//BOTAO DE TESTE



			//GameObject[] clones = GameObject.FindGameObjectsWithTag("Avatar");
			//foreach(GameObject clone in clones){ Destroy(clone); }




			try{ GameObject.FindGameObjectWithTag("Avatar").SetActive(true); }catch(Exception e){Debug.Log("Nao conseguiu setar ativi");}


			try{ Destroy(GameObject.FindGameObjectWithTag("Clone")); }catch(Exception e){Debug.Log("Nao achou o clone");}
			Instantiate(GameObject.FindGameObjectWithTag("Avatar")).tag = ("Clone");


			//GameObject.FindGameObjectWithTag("Avatar").SetActive(false);

			//Destroy (GameObject.FindGameObjectWithTag("Avatar"));


			//GameObject.FindGameObjectWithTag("Avatar").SetActive(true);



		}//BOTAO DE TESTE

*/





	}//onGui

	//static void ClearConsole () {
	//	// This simply does "LogEntries.Clear()" the long way:
	//	var logEntries = System.Type.GetType("UnityEditorInternal.LogEntries,UnityEditor.dll");
	//	var clearMethod = logEntries.GetMethod("Clear", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public);
	//	clearMethod.Invoke(null,null);
	//}

	void OnApplicationQuit() {

		Debug.Log("Finalizando: "+ coreFinalize( ));

	}

}