FinalScript.cs 10.5 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( ));
		
	}
	
}