// Coroutine para fechar a mensagem de acesso garantido ao portal após 3 segundos IEnumerator EndGrantedMessage(TeleportDestroyed.Places whatPortalIsThis) { // confere em qual portal está switch (whatPortalIsThis) { case TeleportDestroyed.Places.Neutro: break; case TeleportDestroyed.Places.Ferreiro: TeleportTo.ferreiroJustOpened = false; // define a variável estática que ACABOU de receber acesso como falsa, afinal a pessoa recebe acesso permanente apenas uma vez break; case TeleportDestroyed.Places.Porto: TeleportTo.portoJustOpened = false; break; default: break; } // espera 3 segundos para realizar o switch acima yield return(new WaitForSeconds(3)); // fecha a interface messageBox.SetBool("isOpen", false); // espera 3 segundos para fechar yield return(new WaitForSeconds(3)); }
// método para mostrar a mensagem que acabou de receber acesso a um portal -> Será chamado no Start da classe ThisPortalMessage public void DisplayGainedAccessMessage(string namePortal, TeleportDestroyed.Places whatPortalIsThis, string accessMessage) { bool justOpenedPortal = false; // define como falsa uma variável para saber se acabou de receber acesso // identificar qual portal é esse p/ saber se já recebeu acesso a ele ou não switch (whatPortalIsThis) { case TeleportDestroyed.Places.Ferreiro: justOpenedPortal = TeleportTo.ferreiroJustOpened; // define a variável com o valor estático de cada portal break; case TeleportDestroyed.Places.Porto: justOpenedPortal = TeleportTo.portoJustOpened; break; case TeleportDestroyed.Places.Neutro: break; default: break; } // CASO tenha ACABADO de receber acesso a um portal if (justOpenedPortal) { messageBox.SetBool("isOpen", true); // mostra a interface StopAllCoroutines(); // para todas as coroutines para evitar bug StartCoroutine(TypeSentence(namePortal, accessMessage)); // escreve na interface o nome do portal e a frase de acesso StartCoroutine(EndGrantedMessage(whatPortalIsThis)); // inicia a coroutine para fechar a interface após 3 segundos } }