PlayerManager.cs 4.17 KB
//Log Dir		 http://docs.unity3d.com/Manual/LogFiles.html

// requisiçao http get no unity
// vlibras.lavid.ufpb.br:5000/glosa?texto=CASA%LAVID%123	
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;
using UnityEngine.UI;
using System.Threading;

public class PlayerManager : GenericPlayerManager {

	private const string BASE_URL = "http://150.165.205.9/anims/ANDROID/";
	private const string SERVER_URL = "http://vlibras.lavid.ufpb.br/glosa?texto=";

	protected VoiceRecognition voiceRecognizer;

	public GameObject loadingSnippet;
	public InputField translateScreenText;

	private int version = 1;
	public Canvas canvas_connection_error;

	private string[] randomAnimationNames = new string[] {
		"[BOCEJAR]",
		"[COCHILAR]",
		"[ESPREGUIÇADA]",
		//"[RELAXAR]"
	};

	public GameObject textButton;
	public GameObject pauseButton;
	public GameObject pauseMenu;
	public GameObject voiceRecognizerScreenConfirm;
	private SwitchImageAttribute pauseButtonImage;

	public override void Start()
	{
		this.pauseButtonImage = this.pauseButton.GetComponent<SwitchImageAttribute>();
		
		base.setRandomAnimations(new RandomAnimations(this, randomAnimationNames, 2, 1F), randomAnimationNames);
		base.Start();

		// DEBUG: var onLoadPlayer = function(){}
		Application.ExternalCall("onLoadPlayer");
		voiceRecognizer = new VoiceRecognition();
		Screen.fullScreen = false;
	}

	public void start_play()
	{
		base.play();
	}

	public void start_play(string glosa)
	{
		base.play(glosa);
	}

	public void playTranslate()
	{
		Debug.Log("INPUT: " + translateScreenText.text);
		StartCoroutine("translate", translateScreenText.text);
	}

	public void playDictWord(string glosa)
	{
		base.glosa = glosa;

		// Stop loading, if loading
		// Don't stop animations, if playing
		// Load glosa, enqueue animations
		base.play(true, false, true);
	}

	protected override WWW loadAssetBundle(string aniName)
	{
		if (aniName[0] == '[' && aniName[aniName.Length - 1] == ']')
		{
			string assetPath = Application.dataPath + "/Bundles/" + aniName;

			if ( ! File.Exists(assetPath))
				return null;

			try {
				WWW www = new WWW("file://" + assetPath);
				return www;
			} catch (Exception e) {
				Debug.Log(e);
			}
		}

		return WWW.LoadFromCacheOrDownload(BASE_URL + aniName, version);
	}

	private bool playingState = false;

	private void setPlayingState(bool state)
	{
		if (this.playingState != state)
		{
			this.playingState = state;

			this.textButton.SetActive( ! state);
			this.pauseButton.SetActive(state);
		}
	}

	protected override void onPlayingStateChange()
	{
		if (base.isPlaying() && ! base.isPlayingIntervalAnimation())
		{
			setPlayingState(true);

			if (base.isPaused())
				this.pauseButtonImage.switchAttribute(true);
			else
				this.pauseButtonImage.switchAttribute(false);
		}
		else setPlayingState(false);
	}

	// Called from microphone icon at main interface
	public void callVoiceRecognizer()
	{
		string glosa = voiceRecognizer.callRecognition();
		voiceRecognizerScreenConfirm.SetActive(true);
		
		InputField inp = GameObject.FindGameObjectWithTag("field_text_entry").GetComponent<InputField>() as InputField;
		inp.text = glosa;
	}

	private IEnumerator translate(string glosa)
	{
		this.loadingSnippet.SetActive(true);

		WWW glosaRequest = new WWW(SERVER_URL + WWW.EscapeURL(glosa));
		glosa = glosa.ToUpper();

		if (glosaRequest != null)
		{
			yield return glosaRequest.isDone;

			if (glosaRequest.error == null)
			{
				yield return glosaRequest;

				if ( ! String.IsNullOrEmpty(glosaRequest.text))
				{
					Debug.Log("Server answer: " + glosaRequest.text);
					glosa = glosaRequest.text;
				}
				else Debug.Log("Error at PlayerManager.translate: empty answer.");
			}
			else Debug.Log("Error at PlayerManager.translate: (WWW) glosaRequest: " + glosaRequest.error);
		}
		else Debug.Log ("Error at PlayerManager.translate: (WWW) glosaRequest is NULL.");

		this.loadingSnippet.SetActive(false);
		base.play(glosa);
	}

	/*private void setConnectionErrorMessageStatus(bool enabled)
	{
		canvas_connection_error.enabled = enabled;
		SetAvatarCollider( ! enabled);
		ScreenReferences.HOME_SCREEN = ! enabled;
	}*/

}