// 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, TeleportTo.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 TeleportTo.Places.Condado: break; case TeleportTo.Places.Ferreiro: justOpenedPortal = TeleportTo.ferreiroJustOpened; // define a variável com o valor estático de cada portal break; case TeleportTo.Places.Labirinto: justOpenedPortal = TeleportTo.labirintoJustOpened; break; case TeleportTo.Places.Porto: justOpenedPortal = TeleportTo.portoJustOpened; break; case TeleportTo.Places.Floresta: justOpenedPortal = TeleportTo.florestaJustOpened; break; case TeleportTo.Places.Caverna: justOpenedPortal = TeleportTo.cavernaJustOpened; 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 } }
// Coroutine para fechar a mensagem de acesso garantido ao portal após 3 segundos IEnumerator EndGrantedMessage(TeleportTo.Places whatPortalIsThis) { // confere em qual portal está switch (whatPortalIsThis) { case TeleportTo.Places.Condado: break; case TeleportTo.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 TeleportTo.Places.Labirinto: TeleportTo.labirintoJustOpened = false; break; case TeleportTo.Places.Porto: TeleportTo.portoJustOpened = false; break; case TeleportTo.Places.Floresta: TeleportTo.florestaJustOpened = false; break; case TeleportTo.Places.Caverna: TeleportTo.cavernaJustOpened = 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)); }