/// <summary> /// Corotina responsável por apresentar um novo pedido, atualizando o tempo decorrido. /// </summary> /// <param name="pedido">Pedido que será mostrado</param> /// <returns></returns> public IEnumerator MostrarPedido(Pedido pedido) { //Instancia o prefab do objeto e o adiciona no PainelPedido para mostrar o pedido ao jogador. var prefPedido = Instantiate(Resources.Load <GameObject>("Prefabs/Pedido"), MyCanvas.PainelPedido); prefPedido.GetComponentsInChildren <Text>()[0].text = "Pedido\n" + pedido.objetoNecessario.nome; //Iteração que atualizará o tempo decorrido de acordo com a necessidade. for (int i = 0; i <= pedido.tempoDeEspera; i++) { if (pedidosAndamento.Contains(pedido) && FaseController.IsFaseRodando()) { prefPedido.GetComponentsInChildren <Text>()[1].text = pedido.tempoDecorrido + "/" + pedido.tempoDeEspera; pedido.tempoDecorrido = i; yield return(new WaitForSeconds(1f)); } else { break; } } if (FaseController.IsFaseRodando()) { //Quando chega ao fim do tempo do tempo decorrido, remove o pedido da lista de pedidos em andamento e o apaga do PainelPedidos. pedidosAndamento.Remove(pedido); MyCanvas.ApagarFilhoPainelPedido(pedido.objetoNecessario.nome); } }
/// <summary> /// Verifica se existe um pedido na lista de pedidos com esses parâmetros e o apaga da lista de pedidos. /// </summary> private void VerificarEntregaSucesso() { //Pega a lista de pedidos, fazendo referência à classe PedidoController que está na Camera. var p = Camera.main.GetComponent <PedidoController>().pedidosAndamento; //Verifica se na lista de pedidos há um pedido solicitando o objeto que está na mão do jogador. if (p.Where(x => x.VerificarPedidoCompleto(Personagem.ObjetoNaMao)).Count() > 0) { //Caso exista, adiciona o objeto na lista de ObjetosEntregues e limpa a mão do jogador. objetosEntregues.Add(Personagem.ObjetoNaMao); Personagem.ObjetoNaMao.LimparMaoJogador(Personagem.name); //Pega o primeiro pedido que solicite o objeto que está na mão do jogador. var pedido = p.Where(x => x.VerificarPedidoCompleto(Personagem.ObjetoNaMao)).First(); //Remove este pedido da lista de pedidos. p.Remove(pedido); //Destroi o "Panfleto" dele do painel de Pedidos. //Procura todos os filhos do PainelPedido e trás uma coleção de Pedidos que tenham no texto o nome do Objeto Necessário. //Filtra e usa apenas o primeiro pedido da coleção. MyCanvas.ApagarFilhoPainelPedido(pedido.objetoNecessario.nome); //Apaga o objeto que estiver na mão do jogador. Personagem.ObjetoNaMao = null; //Atribui a nova lista de pedido (sem o pedido que está completo agora) no campo 'pedidos' do PedidoController. Camera.main.GetComponent <PedidoController>().pedidosAndamento = p; if (TutorialController.isEsperandoEntregar) { TutorialController.MostrarEntregouObjeto(); } // Avisa o persoangem que objeto foi entregue com sucesso. Debug.Log("Objeto entregue com sucesso!"); } else { //Caso não tenha pedidos para o objeto que está na mão do jogador, dá um feedback avisando-o. Debug.Log("Não existem pedidos para esse objeto."); } }