Exemplo n.º 1
0
    /// <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);
        }
    }
Exemplo n.º 2
0
    /// <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.");
        }
    }