Commit 664858267bf3a7f59b0dbf785639fb12d7fac33f

Authored by Mateus Lustosa
1 parent f1f0ce68
Exists in master and in 1 other branch dev

Nova implementacao do GenericPlayerManager

Assets/Bundles/XEROX 0 → 100644
No preview for this file type
Assets/Bundles/XINGAR 0 → 100644
No preview for this file type
Assets/Scenes/Scene.unity
@@ -37,9 +37,6 @@ RenderSettings: @@ -37,9 +37,6 @@ RenderSettings:
37 m_ReflectionIntensity: 1 37 m_ReflectionIntensity: 1
38 m_CustomReflection: {fileID: 0} 38 m_CustomReflection: {fileID: 0}
39 m_Sun: {fileID: 0} 39 m_Sun: {fileID: 0}
40 ---- !u!127 &3  
41 -LevelGameManager:  
42 - m_ObjectHideFlags: 0  
43 --- !u!157 &4 40 --- !u!157 &4
44 LightmapSettings: 41 LightmapSettings:
45 m_ObjectHideFlags: 0 42 m_ObjectHideFlags: 0
@@ -68,6 +65,7 @@ LightmapSettings: @@ -68,6 +65,7 @@ LightmapSettings:
68 m_TextureCompression: 0 65 m_TextureCompression: 0
69 m_FinalGather: 0 66 m_FinalGather: 0
70 m_FinalGatherRayCount: 1024 67 m_FinalGatherRayCount: 1024
  68 + m_ReflectionCompression: 2
71 m_LightmapSnapshot: {fileID: 0} 69 m_LightmapSnapshot: {fileID: 0}
72 m_RuntimeCPUUsage: 25 70 m_RuntimeCPUUsage: 25
73 --- !u!196 &5 71 --- !u!196 &5
Assets/Scripts/Editor/MyEditorScript.cs 0 → 100644
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
  1 +using UnityEditor;
  2 +using UnityEngine;
  3 +
  4 +class MyEditorScript
  5 +{
  6 + static void RunAsd ()
  7 + {
  8 + Debug.Log("asd");
  9 + }
  10 +}
0 \ No newline at end of file 11 \ No newline at end of file
Assets/Scripts/Editor/MyEditorScript.cs.meta 0 → 100644
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +fileFormatVersion: 2
  2 +guid: 789d1dce6607a394b82bcaa4af8d1c46
  3 +timeCreated: 1448041534
  4 +licenseType: Pro
  5 +MonoImporter:
  6 + serializedVersion: 2
  7 + defaultReferences: []
  8 + executionOrder: 0
  9 + icon: {instanceID: 0}
  10 + userData:
  11 + assetBundleName:
  12 + assetBundleVariant:
Assets/Scripts/GenericPlayerManager.cs
@@ -10,11 +10,13 @@ using UnityEngine.UI; @@ -10,11 +10,13 @@ using UnityEngine.UI;
10 10
11 public abstract class GenericPlayerManager : MonoBehaviour { 11 public abstract class GenericPlayerManager : MonoBehaviour {
12 12
13 - private struct AnimationReference { 13 + private class AnimationReference
  14 + {
14 public string name; 15 public string name;
15 public string subtitle; 16 public string subtitle;
16 public AnimationState state; 17 public AnimationState state;
17 public short type; 18 public short type;
  19 + public bool playing;
18 20
19 public AnimationReference(string name, string subtitle, AnimationState state, short type) 21 public AnimationReference(string name, string subtitle, AnimationState state, short type)
20 { 22 {
@@ -22,53 +24,70 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -22,53 +24,70 @@ public abstract class GenericPlayerManager : MonoBehaviour {
22 this.subtitle = subtitle; 24 this.subtitle = subtitle;
23 this.state = state; 25 this.state = state;
24 this.type = type; 26 this.type = type;
  27 + this.playing = false;
  28 + }
  29 + }
  30 +
  31 + protected class DefaultSignSpeed
  32 + {
  33 + public static float DEFAULT = 1.1F;
  34 + public static float DEFAULT_MAX = 2F;
  35 +
  36 + public float speed;
  37 + public float max;
  38 + // Relação entre a velocidade do tipo representado e a velocidade DEFAULT.
  39 + public float unit;
  40 +
  41 + public DefaultSignSpeed()
  42 + {
  43 + this.speed = DEFAULT;
  44 + this.max = DEFAULT_MAX;
  45 + this.unit = 1F;
  46 + }
  47 +
  48 + public DefaultSignSpeed(float defaultSpeed, float defaultMaxSpeed)
  49 + {
  50 + this.speed = defaultSpeed;
  51 + this.max = defaultMaxSpeed;
  52 + this.unit = (this.max - this.speed) / (DEFAULT_MAX - DEFAULT);
25 } 53 }
26 54
  55 + /*
  56 + * Retorna velocidade em relação ao estado do slider.
  57 + * @param slider - estado do slider (valor entre DefaultSignSpeed.DEFAULT e DefaultSignSpeed.DEFAULT_MAX)
  58 + */
  59 + public float getProporcionalSpeed(float slider)
  60 + {
  61 + return this.speed + (slider - DEFAULT) * this.unit;
  62 + }
27 } 63 }
28 64
29 private const string DEFAULT_ANIMATION = "_default"; 65 private const string DEFAULT_ANIMATION = "_default";
30 private const string NONE_ANIMATION = "_defaultWORD"; 66 private const string NONE_ANIMATION = "_defaultWORD";
31 67
32 - private const float FADE_LENGTH = 0.6F;  
33 -  
34 - private const float WORD_DEFAULT_SPEED = 1.1F;  
35 - private const float WORD_MAX_SPEED = 2F;  
36 -  
37 - // Velocidade da primeira letra de uma palavra  
38 - private const float LETTER_FIRST_SPEED = 1.8F;  
39 - // Velocidade máxima de uma letra que o slider pode configurar  
40 - private const float LETTER_FIRST_MAX_SPEED = 2.8F;  
41 - // Taxa de velocidade da primeira letra de uma palavra equivalente a velocidade de uma palavra  
42 - private const float LETTER_FIRST_UNIT_SPEED = (LETTER_FIRST_MAX_SPEED - LETTER_FIRST_SPEED) / (WORD_MAX_SPEED - WORD_DEFAULT_SPEED);  
43 - // Velocidade das outras letras  
44 - private const float LETTER_DEFAULT_SPEED = 2.8F;  
45 - // Velocidade máxima de uma letra que o slider pode configurar  
46 - private const float LETTER_MAX_SPEED = 4.3F;  
47 - // Taxa de velocidade das outras letras equivalente a velocidade de uma palavra  
48 - private const float LETTER_UNIT_SPEED = (LETTER_MAX_SPEED - LETTER_DEFAULT_SPEED) / (WORD_MAX_SPEED - WORD_DEFAULT_SPEED);  
49 -  
50 - // Velocidade de reprodução de números  
51 - private const float NUMBER_DEFAULT_SPEED = 1.5F;  
52 - // Velocidade máxima de um número que o slider pode configurar  
53 - private const float NUMBER_MAX_SPEED = 2.9F;  
54 - // Taxa de velocidade equivalente a uma unidade de velocidade de uma palavra  
55 - private const float NUMBER_UNIT_SPEED = (NUMBER_MAX_SPEED - NUMBER_DEFAULT_SPEED) / (WORD_MAX_SPEED - WORD_DEFAULT_SPEED); 68 + protected float fadeLength = 0.6F;
  69 +
  70 + protected DefaultSignSpeed defaultWordSpeed = new DefaultSignSpeed();
  71 + protected DefaultSignSpeed defaultFirstLetterSpeed = new DefaultSignSpeed(2.1F, 2.8F);
  72 + protected DefaultSignSpeed defaultLetterSpeed = new DefaultSignSpeed(3F, 4.3F);
  73 + protected DefaultSignSpeed defaultNumberSpeed = new DefaultSignSpeed(1.5F, 2.9F);
56 74
57 private const short TYPE_NONE = -1; 75 private const short TYPE_NONE = -1;
58 private const short TYPE_WORD = 0; 76 private const short TYPE_WORD = 0;
59 private const short TYPE_LETTER = 1; 77 private const short TYPE_LETTER = 1;
60 private const short TYPE_NUMBER = 2; 78 private const short TYPE_NUMBER = 2;
61 79
62 - private static float hSlidersecond = WORD_DEFAULT_SPEED;  
63 - private float letterSpeed = LETTER_DEFAULT_SPEED;  
64 - private float numberSpeed = NUMBER_DEFAULT_SPEED; 80 + private float hSlidersecond = DefaultSignSpeed.DEFAULT;
  81 + private float wordSpeed = DefaultSignSpeed.DEFAULT;
  82 + private float letterSpeed = DefaultSignSpeed.DEFAULT;
  83 + private float numberSpeed = DefaultSignSpeed.DEFAULT;
65 84
66 protected string glosa = ""; 85 protected string glosa = "";
67 private static String[] stringPos = { DEFAULT_ANIMATION };//vetor que sera usado para quebrar a glosa 86 private static String[] stringPos = { DEFAULT_ANIMATION };//vetor que sera usado para quebrar a glosa
68 87
69 - public GameObject AVATAR; 88 + private GameObject AVATAR;
70 private Animation COMPONENT_ANIMATION; 89 private Animation COMPONENT_ANIMATION;
71 - private BoxCollider COMPONENT_COLLIDER; 90 + private BoxCollider AVATAR_COLLIDER;
72 public Text SUBTITLES; 91 public Text SUBTITLES;
73 92
74 // Guarda os nomes das palavras ja carregadas. 93 // Guarda os nomes das palavras ja carregadas.
@@ -80,21 +99,30 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -80,21 +99,30 @@ public abstract class GenericPlayerManager : MonoBehaviour {
80 // Utilizada para alterar velocidade e apresentar a legenda. 99 // Utilizada para alterar velocidade e apresentar a legenda.
81 private volatile Queue<AnimationReference> animQueue = new Queue<AnimationReference>(); 100 private volatile Queue<AnimationReference> animQueue = new Queue<AnimationReference>();
82 101
83 - // "play" flag. Indica se está carregando a glosa. 102 + private volatile bool loadingSingleAnimation = false;
84 private volatile bool loading = false; 103 private volatile bool loading = false;
85 -  
86 - protected bool playing = false;  
87 - protected bool paused = false; 104 + private volatile bool playing = false;
  105 + private volatile bool paused = false;
88 106
89 public virtual void Start() 107 public virtual void Start()
90 { 108 {
91 - //Gets Animation Component reference from AVATAR  
92 - COMPONENT_ANIMATION = AVATAR.GetComponent<Animation>();  
93 - COMPONENT_COLLIDER = AVATAR.GetComponent<BoxCollider>(); 109 + wordSpeed = defaultWordSpeed.speed;
  110 + letterSpeed = defaultLetterSpeed.speed;
  111 + numberSpeed = defaultNumberSpeed.speed;
  112 +
  113 + AVATAR = GameObject.FindGameObjectWithTag("avatar");//referencia para o avatar
  114 + COMPONENT_ANIMATION = AVATAR.GetComponent<Animation>();//referencia para o componente animador do avatar
  115 + AVATAR_COLLIDER = GameObject.FindGameObjectWithTag("avatar").GetComponent<BoxCollider>();
94 } 116 }
95 117
96 - public void SetAvatarCollider(bool active){  
97 - COMPONENT_COLLIDER.enabled = active; 118 + public bool isLoadingSingleAnimation() { return loadingSingleAnimation; }
  119 + public bool isLoading() { return loading; }
  120 + public bool isPlaying() { return playing; }
  121 + public bool isPaused() { return paused; }
  122 +
  123 + public void SetAvatarCollider(bool isActive)
  124 + {
  125 + AVATAR_COLLIDER.enabled = isActive;
98 } 126 }
99 127
100 protected virtual void setSubtitle(string text) 128 protected virtual void setSubtitle(string text)
@@ -107,8 +135,9 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -107,8 +135,9 @@ public abstract class GenericPlayerManager : MonoBehaviour {
107 { 135 {
108 hSlidersecond = x; 136 hSlidersecond = x;
109 137
110 - letterSpeed = getProporcionalSpeed(LETTER_DEFAULT_SPEED, LETTER_UNIT_SPEED);  
111 - numberSpeed = getProporcionalSpeed(NUMBER_DEFAULT_SPEED, NUMBER_UNIT_SPEED); 138 + wordSpeed = defaultWordSpeed.getProporcionalSpeed(x);
  139 + letterSpeed = defaultLetterSpeed.getProporcionalSpeed(x);
  140 + numberSpeed = defaultNumberSpeed.getProporcionalSpeed(x);
112 141
113 if ( ! paused) 142 if ( ! paused)
114 foreach (AnimationReference reference in animQueue) 143 foreach (AnimationReference reference in animQueue)
@@ -116,20 +145,15 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -116,20 +145,15 @@ public abstract class GenericPlayerManager : MonoBehaviour {
116 reference.state.speed = getSpeedByType(reference.type); 145 reference.state.speed = getSpeedByType(reference.type);
117 } 146 }
118 147
119 - private float getProporcionalSpeed(float speed, float unit)  
120 - {  
121 - return speed + (hSlidersecond - WORD_DEFAULT_SPEED) * unit;  
122 - }  
123 -  
124 private float getSpeedByType(short type) 148 private float getSpeedByType(short type)
125 { 149 {
126 switch (type) 150 switch (type)
127 { 151 {
128 - case TYPE_WORD: return hSlidersecond; 152 + case TYPE_WORD: return wordSpeed;
129 case TYPE_LETTER: return letterSpeed; 153 case TYPE_LETTER: return letterSpeed;
130 case TYPE_NUMBER: return numberSpeed; 154 case TYPE_NUMBER: return numberSpeed;
131 } 155 }
132 - 156 +
133 return 2F; 157 return 2F;
134 } 158 }
135 159
@@ -159,21 +183,21 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -159,21 +183,21 @@ public abstract class GenericPlayerManager : MonoBehaviour {
159 } catch (NullReferenceException nre) { Debug.Log("SetQueueList null reff::"+nre.ToString()); } 183 } catch (NullReferenceException nre) { Debug.Log("SetQueueList null reff::"+nre.ToString()); }
160 184
161 COMPONENT_ANIMATION.Stop(); 185 COMPONENT_ANIMATION.Stop();
162 - COMPONENT_ANIMATION.CrossFade(DEFAULT_ANIMATION, FADE_LENGTH, PlayMode.StopAll); 186 + COMPONENT_ANIMATION.CrossFade(DEFAULT_ANIMATION, fadeLength, PlayMode.StopAll);
163 } 187 }
164 188
165 /* 189 /*
166 * Manda reproduzir animação e adiciona a file de animações a serem reproduzidas. 190 * Manda reproduzir animação e adiciona a file de animações a serem reproduzidas.
167 * 191 *
168 * Caso não haja SUBTITLE, name será utilizado como SUBTITLE. 192 * Caso não haja SUBTITLE, name será utilizado como SUBTITLE.
169 - * Caso não haja fadeLength, será atribuido FADE_LENGTH. 193 + * Caso não haja fadeLength, será atribuido fadeLength.
170 * Caso não haja velocidade, hSlidersecond será atribuída. 194 * Caso não haja velocidade, hSlidersecond será atribuída.
171 */ 195 */
172 private AnimationState playAnimation(short type, string name, string subtitle, float speed) 196 private AnimationState playAnimation(short type, string name, string subtitle, float speed)
173 { 197 {
174 try 198 try
175 { 199 {
176 - AnimationState state = COMPONENT_ANIMATION.CrossFadeQueued(name, FADE_LENGTH, QueueMode.CompleteOthers); 200 + AnimationState state = COMPONENT_ANIMATION.CrossFadeQueued(name, fadeLength, QueueMode.CompleteOthers);
177 state.speed = speed; 201 state.speed = speed;
178 animQueue.Enqueue(new AnimationReference(name, subtitle, state, type)); 202 animQueue.Enqueue(new AnimationReference(name, subtitle, state, type));
179 203
@@ -202,36 +226,63 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -202,36 +226,63 @@ public abstract class GenericPlayerManager : MonoBehaviour {
202 */ 226 */
203 protected abstract WWW loadAssetBundle(string aniName); 227 protected abstract WWW loadAssetBundle(string aniName);
204 228
  229 +
205 /** 230 /**
206 * Listen to changes in the playing status. 231 * Listen to changes in the playing status.
207 */ 232 */
208 protected abstract void onPlayingStateChange(); 233 protected abstract void onPlayingStateChange();
209 234
210 - public void play() 235 +
  236 + public void switchPauseState(bool paused)
211 { 237 {
212 - if (playing) 238 + if (this.paused != paused)
213 { 239 {
214 - paused = ! paused; 240 + this.paused = paused;
215 241
216 foreach (AnimationReference reference in animQueue) 242 foreach (AnimationReference reference in animQueue)
217 if (reference.state != null) 243 if (reference.state != null)
218 reference.state.speed = paused ? 0F : getSpeedByType(reference.type); 244 reference.state.speed = paused ? 0F : getSpeedByType(reference.type);
  245 +
  246 + onPlayingStateChange();
219 } 247 }
  248 + }
  249 + public void switchPauseState()
  250 + {
  251 + switchPauseState( ! paused);
  252 + }
  253 +
  254 + public bool play()
  255 + {
  256 + if (playing)
  257 + switchPauseState();
220 else 258 else
221 - {  
222 - playing = true; 259 + play(true, true, true);
  260 +
  261 + return true;
  262 + }
223 263
224 - try{  
225 - if (loading) 264 + public bool play(bool stopLoading, bool stopPlaying, bool forceLoading)
  265 + {
  266 + try {
  267 + if (loading)
  268 + {
  269 + if (stopLoading)
226 stop_animations(); 270 stop_animations();
227 else 271 else
  272 + return false;
  273 + }
  274 + else if (playing)
  275 + {
  276 + if (stopPlaying)
228 stopAnimations(); 277 stopAnimations();
229 - } catch (NullReferenceException nre) { nre.ToString(); }  
230 278
231 - StartCoroutine("loadAndPlay");  
232 - } 279 + else if ( ! forceLoading)
  280 + return false;
  281 + }
  282 + } catch (NullReferenceException nre) { nre.ToString(); }
233 283
234 - onPlayingStateChange(); 284 + StartCoroutine("loadAndPlay");
  285 + return true;
235 } 286 }
236 287
237 288
@@ -279,7 +330,7 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -279,7 +330,7 @@ public abstract class GenericPlayerManager : MonoBehaviour {
279 bool defaultPlayed = false; 330 bool defaultPlayed = false;
280 331
281 // A reprodução da primeira letra deve ser longa para não ser cortada no fade 332 // A reprodução da primeira letra deve ser longa para não ser cortada no fade
282 - letterSpeed = getProporcionalSpeed(LETTER_FIRST_SPEED, LETTER_FIRST_UNIT_SPEED); 333 + letterSpeed = defaultLetterSpeed.getProporcionalSpeed(hSlidersecond);
283 334
284 for (int i = 0; i < word.Length; i++) 335 for (int i = 0; i < word.Length; i++)
285 { 336 {
@@ -293,11 +344,11 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -293,11 +344,11 @@ public abstract class GenericPlayerManager : MonoBehaviour {
293 // Se for um número 344 // Se for um número
294 else if (second >= 48 && second <= 57) 345 else if (second >= 48 && second <= 57)
295 playAnimation(TYPE_NUMBER, second.ToString(), lastAnimationSubtitle, numberSpeed); 346 playAnimation(TYPE_NUMBER, second.ToString(), lastAnimationSubtitle, numberSpeed);
296 - 347 +
297 // Se for uma vírgula 348 // Se for uma vírgula
298 else if (second == 44) 349 else if (second == 44)
299 playAnimation(TYPE_WORD, second.ToString(), lastAnimationSubtitle); 350 playAnimation(TYPE_WORD, second.ToString(), lastAnimationSubtitle);
300 - 351 +
301 // Não há animação 352 // Não há animação
302 else 353 else
303 { 354 {
@@ -308,7 +359,7 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -308,7 +359,7 @@ public abstract class GenericPlayerManager : MonoBehaviour {
308 playAnimation(TYPE_NONE, DEFAULT_ANIMATION, lastAnimationSubtitle); 359 playAnimation(TYPE_NONE, DEFAULT_ANIMATION, lastAnimationSubtitle);
309 360
310 // A reprodução da próxima letra deve ser longa para não ser cortada no fade 361 // A reprodução da próxima letra deve ser longa para não ser cortada no fade
311 - letterSpeed = getProporcionalSpeed(LETTER_FIRST_SPEED, LETTER_FIRST_UNIT_SPEED); 362 + letterSpeed = defaultLetterSpeed.getProporcionalSpeed(hSlidersecond);
312 } 363 }
313 364
314 Debug.Log("Animação \"" + second + "\" inexistente."); 365 Debug.Log("Animação \"" + second + "\" inexistente.");
@@ -316,23 +367,69 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -316,23 +367,69 @@ public abstract class GenericPlayerManager : MonoBehaviour {
316 } 367 }
317 368
318 defaultPlayed = false; 369 defaultPlayed = false;
319 - letterSpeed = getProporcionalSpeed(LETTER_DEFAULT_SPEED, LETTER_UNIT_SPEED); 370 + letterSpeed = defaultLetterSpeed.getProporcionalSpeed(hSlidersecond);
320 } 371 }
321 372
322 return lastAnimationSubtitle; 373 return lastAnimationSubtitle;
323 } 374 }
324 375
325 376
  377 + protected IEnumerator loadAnimation(string name)
  378 + {
  379 + loadingSingleAnimation = true;
  380 +
  381 + // Função loadAssetBundle é definida pela classe filha
  382 + WWW www = loadAssetBundle(name);
  383 +
  384 + if (www != null)
  385 + {
  386 + yield return www;
  387 +
  388 + AssetBundle bundle = null;
  389 +
  390 + if (www.error == null)
  391 + bundle = www.assetBundle;
  392 +
  393 + if (bundle != null && ! String.IsNullOrEmpty(bundle.mainAsset.name))
  394 + {
  395 + AnimationClip aniClip = bundle.mainAsset as AnimationClip;
  396 + bundle.Unload(false);
  397 +
  398 + if (aniClip)
  399 + {
  400 + COMPONENT_ANIMATION.AddClip(aniClip, name);
  401 +
  402 + // Reproduz palavra
  403 + loadedAssetBundles.Add(name);
  404 + yield break;
  405 + }
  406 + else Debug.Log ("Sinal \"" + name + "\" não carregado corretamente.");
  407 + }
  408 + }
  409 +
  410 + // Soletra palavra
  411 + nonexistentAssetBundles.Add(name);
  412 +
  413 + loadingSingleAnimation = false;
  414 + }
  415 +
  416 +
326 private IEnumerator loadAndPlay() 417 private IEnumerator loadAndPlay()
327 { 418 {
328 loading = true; 419 loading = true;
  420 + onPlayingStateChange();
329 421
330 string lastAnimationSubtitle = ""; 422 string lastAnimationSubtitle = "";
331 bool spelled = false; 423 bool spelled = false;
332 424
333 // Default 425 // Default
334 playAnimation(TYPE_NONE, DEFAULT_ANIMATION, "", 2F); 426 playAnimation(TYPE_NONE, DEFAULT_ANIMATION, "", 2F);
335 - StartCoroutine("handleStates"); 427 +
  428 + if ( ! playing)
  429 + {
  430 + playing = true;
  431 + StartCoroutine("handleStates");
  432 + }
336 433
337 stringPos = glosa.Split(' '); 434 stringPos = glosa.Split(' ');
338 435
@@ -389,7 +486,6 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -389,7 +486,6 @@ public abstract class GenericPlayerManager : MonoBehaviour {
389 } 486 }
390 487
391 bool isPunctuation = false; 488 bool isPunctuation = false;
392 - lastAnimationSubtitle = aniName;  
393 489
394 if (aniName[0] == '[') 490 if (aniName[0] == '[')
395 { 491 {
@@ -410,15 +506,16 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -410,15 +506,16 @@ public abstract class GenericPlayerManager : MonoBehaviour {
410 isPunctuation = true; 506 isPunctuation = true;
411 lastAnimationSubtitle = "!"; 507 lastAnimationSubtitle = "!";
412 } 508 }
  509 + else
  510 + {
  511 + lastAnimationSubtitle = aniName;
  512 + }
413 } 513 }
414 514
415 if (isPunctuation) 515 if (isPunctuation)
416 playAnimation(TYPE_WORD, aniName, lastAnimationSubtitle); 516 playAnimation(TYPE_WORD, aniName, lastAnimationSubtitle);
417 else 517 else
418 playAnimation(TYPE_WORD, aniName); 518 playAnimation(TYPE_WORD, aniName);
419 -  
420 - /*playAnimation(TYPE_WORD, aniName);  
421 - lastAnimationSubtitle = aniName;*/  
422 } 519 }
423 // Soletra palavra 520 // Soletra palavra
424 else 521 else
@@ -428,29 +525,33 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -428,29 +525,33 @@ public abstract class GenericPlayerManager : MonoBehaviour {
428 if ( ! nonexistent) 525 if ( ! nonexistent)
429 nonexistentAssetBundles.Add(aniName); 526 nonexistentAssetBundles.Add(aniName);
430 527
431 - if (aniName[0] == '[' && (aniName.Equals("[PONTO]") || aniName.Equals("[INTERROGACAO]") || aniName.Equals("[EXCLAMACAO]"))) 528 + Debug.Log("~~ To spell: " + aniName);
  529 +
  530 + if (aniName.Equals("[PONTO]") || aniName.Equals("[INTERROGACAO]") || aniName.Equals("[EXCLAMACAO]"))
432 { 531 {
433 playAnimation(TYPE_NONE, DEFAULT_ANIMATION, "", 1.6F); 532 playAnimation(TYPE_NONE, DEFAULT_ANIMATION, "", 1.6F);
  533 + continue;
434 } 534 }
  535 +
  536 + // Se já houve o soletramento de alguma palavra, reproduz animação default
  537 + if (spelled)
  538 + playAnimation(TYPE_NONE, DEFAULT_ANIMATION, lastAnimationSubtitle, 1.6F);
435 else 539 else
436 - {  
437 - // Se já houve o soletramento de alguma palavra, reproduz animação default  
438 - if (spelled)  
439 - playAnimation(TYPE_NONE, DEFAULT_ANIMATION, lastAnimationSubtitle, 1.6F);  
440 - else  
441 - spelled = true; 540 + spelled = true;
442 541
443 - lastAnimationSubtitle = spellWord(aniName);  
444 - } 542 + lastAnimationSubtitle = spellWord(aniName);
445 } 543 }
446 } 544 }
447 545
448 // Default 546 // Default
449 playAnimation(TYPE_NONE, DEFAULT_ANIMATION, lastAnimationSubtitle); 547 playAnimation(TYPE_NONE, DEFAULT_ANIMATION, lastAnimationSubtitle);
450 - loading = false;  
451 548
  549 + loading = false;
  550 + onPlayingStateChange();
452 } 551 }
453 552
  553 + //int _id = 0;
  554 +
454 /* 555 /*
455 * Sincroniza as legendas com as animações. 556 * Sincroniza as legendas com as animações.
456 */ 557 */
@@ -467,9 +568,15 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -467,9 +568,15 @@ public abstract class GenericPlayerManager : MonoBehaviour {
467 setSubtitle(reference.subtitle); 568 setSubtitle(reference.subtitle);
468 569
469 while (COMPONENT_ANIMATION.IsPlaying(reference.name)) 570 while (COMPONENT_ANIMATION.IsPlaying(reference.name))
  571 + {
  572 + reference.playing = true;
470 yield return null; 573 yield return null;
  574 + }
471 575
472 - animQueue.Dequeue(); 576 + if (reference.state == null)
  577 + animQueue.Dequeue();
  578 + else
  579 + yield return null;
473 } 580 }
474 else yield return null; 581 else yield return null;
475 582
@@ -479,19 +586,6 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -479,19 +586,6 @@ public abstract class GenericPlayerManager : MonoBehaviour {
479 playing = false; 586 playing = false;
480 paused = false; 587 paused = false;
481 onPlayingStateChange(); 588 onPlayingStateChange();
482 -  
483 - }  
484 -  
485 -  
486 - /*  
487 - * Chamada quando o player sinaliza UPDATE ou STOP.  
488 - * Limpa as filas de assets existentes e não existentes  
489 - * permitindo que novos assets sejam executados  
490 - */  
491 - public void clear()  
492 - {  
493 - nonexistentAssetBundles.Clear();  
494 - loadedAssetBundles.Clear();  
495 } 589 }
496 590
497 } 591 }
Assets/Scripts/PlayerManager.cs
@@ -48,14 +48,12 @@ public class PlayerManager : GenericPlayerManager { @@ -48,14 +48,12 @@ public class PlayerManager : GenericPlayerManager {
48 // a terceira, para testes com a textbox 48 // a terceira, para testes com a textbox
49 public string catchGlosa() 49 public string catchGlosa()
50 { 50 {
51 - glosa = Marshal.PtrToStringAnsi ( coreExecute( ) );  
52 - //osa = "PIZZA";  
53 - return glosa; 51 + return base.glosa = Marshal.PtrToStringAnsi ( coreExecute( ) );
54 } 52 }
55 53
56 public void start_local_play() 54 public void start_local_play()
57 { 55 {
58 - catchGlosa(); 56 + this.catchGlosa();
59 base.play(); 57 base.play();
60 } 58 }
61 59
@@ -78,9 +76,9 @@ public class PlayerManager : GenericPlayerManager { @@ -78,9 +76,9 @@ public class PlayerManager : GenericPlayerManager {
78 76
79 protected override void onPlayingStateChange() 77 protected override void onPlayingStateChange()
80 { 78 {
81 - if (base.playing) 79 + if (base.isPlaying())
82 { 80 {
83 - playButton.GetComponent<Image>().sprite = base.paused 81 + playButton.GetComponent<Image>().sprite = base.isPaused()
84 ? playSprite : pauseSprite; 82 ? playSprite : pauseSprite;
85 83
86 stopButtonGraphic.color = enabledAlpha; 84 stopButtonGraphic.color = enabledAlpha;
ProjectSettings/ProjectSettings.asset
@@ -115,6 +115,7 @@ PlayerSettings: @@ -115,6 +115,7 @@ PlayerSettings:
115 iPhoneTargetOSVersion: 22 115 iPhoneTargetOSVersion: 22
116 uIPrerenderedIcon: 0 116 uIPrerenderedIcon: 0
117 uIRequiresPersistentWiFi: 0 117 uIRequiresPersistentWiFi: 0
  118 + uIRequiresFullScreen: 1
118 uIStatusBarHidden: 1 119 uIStatusBarHidden: 1
119 uIExitOnSuspend: 0 120 uIExitOnSuspend: 0
120 uIStatusBarStyle: 0 121 uIStatusBarStyle: 0
@@ -163,8 +164,10 @@ PlayerSettings: @@ -163,8 +164,10 @@ PlayerSettings:
163 m_BuildTargetIcons: 164 m_BuildTargetIcons:
164 - m_BuildTarget: 165 - m_BuildTarget:
165 m_Icons: 166 m_Icons:
166 - - m_Icon: {fileID: 2800000, guid: 98a8d3ec5bfc6ef4bacfcc810c9edf5a, type: 3}  
167 - m_Size: 128 167 + - serializedVersion: 2
  168 + m_Icon: {fileID: 2800000, guid: 98a8d3ec5bfc6ef4bacfcc810c9edf5a, type: 3}
  169 + m_Width: 128
  170 + m_Height: 128
168 m_BuildTargetBatching: 171 m_BuildTargetBatching:
169 - m_BuildTarget: WebGL 172 - m_BuildTarget: WebGL
170 m_StaticBatching: 1 173 m_StaticBatching: 1
@@ -261,6 +264,10 @@ PlayerSettings: @@ -261,6 +264,10 @@ PlayerSettings:
261 ps4pnGameCustomData: 1 264 ps4pnGameCustomData: 1
262 playerPrefsSupport: 0 265 playerPrefsSupport: 0
263 ps4ReprojectionSupport: 0 266 ps4ReprojectionSupport: 0
  267 + ps4UseAudio3dBackend: 0
  268 + ps4Audio3dVirtualSpeakerCount: 14
  269 + ps4attribCpuUsage: 0
  270 + ps4SocialScreenEnabled: 0
264 ps4attribUserManagement: 0 271 ps4attribUserManagement: 0
265 ps4attribMoveSupport: 0 272 ps4attribMoveSupport: 0
266 ps4attrib3DSupport: 0 273 ps4attrib3DSupport: 0
ProjectSettings/ProjectVersion.txt
1 -m_EditorVersion: 5.2.1f1 1 +m_EditorVersion: 5.2.3f1
2 m_StandardAssetsVersion: 0 2 m_StandardAssetsVersion: 0