예제 #1
0
        public bool ComPrato()
        {
            if (!espacoMesa || espacoMesa.Vazio())
            {
                return(false);
            }

            string id = espacoMesa.itemAbrigado.GetComponent <GbjID>().id;

            bool ePrato = id.Substring(0, 6) == "#prato";

            if (ePrato)
            {
                int cor_i = espacoMesa.itemAbrigado.GetComponent <Prato>().cor_i;

                if (cor_i == cor_esperada && id == idPratoEsperado)
                {
                    Item    pratoItem = espacoMesa.Soltar();
                    Vector3 pos       = pratoItem.transform.position;
                    espacoCliente.Abrigar(pratoItem);
                    pratoItem.bloqueado          = true;
                    pratoItem.transform.position = pos;
                    return(true);
                }
                else
                {
                    SlimeBravo();
                    return(false);
                }
            }

            return(false);
        }
예제 #2
0
        IEnumerator ConsumirEDestruir(EspacoItem espacoItem, float intervaloPrato)
        {
            Paciencia paciencia = GetComponent <Paciencia>();

            paciencia.consumir = false;
            // paciencia.Recuperar();

            if (SistemaPausa.pausado)
            {
                yield return(new WaitWhile(() => SistemaPausa.pausado));
            }

            yield return(new WaitForSeconds(intervaloPrato));

            if (SistemaPausa.pausado)
            {
                yield return(new WaitWhile(() => SistemaPausa.pausado));
            }

            espacoItem.itemAbrigado.bloqueado = false;
            Item itemPrato = espacoItem.Soltar();

            Destroy(itemPrato.gameObject);

            terminou = true;
        }
예제 #3
0
        void Update()
        {
            if (SistemaPausa.pausado)
            {
                return;
            }

            if (espacoBalcao.Vazio())
            {
                if (tinhaPrato)
                {
                    SistemaEfeitoSonoro.Disparar(EfeitoSonoro.PratoPego);
                }
                tinhaPrato = false;
                return;
            }

            if (espacoBalcao.itemAbrigado.GetComponent <TipoItem>().tipo != TipoItem.Tipo.Pedido)
            {
                return;
            }

            SistemaEfeitoSonoro.Disparar(EfeitoSonoro.PedidoEntregue);
            Item itemItem = espacoBalcao.Soltar();

            // itemItem não pode ser nulo por conta da verificação do Vazio
            Assert.IsNotNull(itemItem);

            Pedido itemPedido = itemItem.GetComponent <Pedido>();

            Assert.IsNotNull(itemPedido);

            for (int i = 0; i < transacoes.Length; i++)
            {
                if (itemPedido.pratoId == transacoes[i].entrada)
                {
                    StartCoroutine(InstanciarPrato(i, itemItem.transform.position, itemPedido.cor_prato));
                    break;
                }
            }

            Destroy(itemItem.gameObject);
        }
예제 #4
0
        void Update()
        {
            if (SistemaPausa.pausado)
            {
                compVelocidade.direcao.x  = 0;
                compVelocidade.direcao.y  = 0;
                compVelocidade.direcao.z  = 0;
                compVelocidade.velocidade = 0;

                return;
            }

            // rotação e direção
            float H = ctrl.ctrlValores.eixoHorizontal;
            float V = ctrl.ctrlValores.eixoVertical;

            direcao.x = 0;
            direcao.y = 0;
            direcao.z = 0;
            if ((H < -0.1f || H > 0.1f) || (V < -0.1f || V > 0.1f))
            {
                if (H < -0.1f)
                {
                    direcao.x = -1;
                }
                else if (H > 0.1f)
                {
                    direcao.x = 1;
                }

                if (V < -0.1f)
                {
                    direcao.z = -1;
                }
                else if (V > 0.1f)
                {
                    direcao.z = 1;
                }

                direcao.Normalize();

                Vector3    pontoOlhar = tr.position + direcao;
                Quaternion rotBkup    = olhador.rotSuave.tr.rotation;
                tr.LookAt(pontoOlhar);
                olhador.alvo = pontoOlhar;
                olhador.rotSuave.tr.rotation = rotBkup;
            }
            else
            {
                olhador.alvo = tr.position + tr.forward;
            }

            // velocidade
            compVelocidade.direcao.x  = 0;
            compVelocidade.direcao.y  = 0;
            compVelocidade.direcao.z  = Mathf.Ceil(direcao.magnitude);
            compVelocidade.velocidade = ctrl.velocidade;

            // pegar ou soltar item
            if (ctrl.ctrlValores.eixoAcao1)
            {
                if (!espacoItem.Vazio())
                {
                    Item item = espacoItem.Soltar();

                    // !espacoItem.Vazio() deve assegurar que item soltado não seja nula!
                    Assert.IsNotNull(item);

                    if (!listaDeEspacosItensProximas.Vazio())
                    {
                        GameObject espacoGbj = listaDeEspacosItensProximas.ObterMaisProximo();

                        // !listaDeEspacosItensProximas.Vazio() deve assegurar que espacoGbj não seja nula!
                        Assert.IsNotNull(espacoGbj);

                        var espacoItemProximo = espacoGbj.GetComponent <EspacoItem>();

                        // espacoGbj deve conter um componente Espacoitem
                        Assert.IsNotNull(espacoItemProximo);

                        espacoItemProximo.Abrigar(item);
                    }
                }
                else if (!listaDeItensProximos.Vazio())
                {
                    // a verificação de Vazio acima garante que ObterMaisProximo não retornará nula
                    GameObject itemGbj = listaDeItensProximos.ObterMaisProximo();

                    // !listaDeItensProximos.Vazio() deve assegurar que itemGbj não seja nula
                    Assert.IsNotNull(itemGbj);

                    var item = itemGbj.GetComponent <Item>();

                    // itemGbj deve conter um componente Item
                    Assert.IsNotNull(item);

                    espacoItem.Abrigar(item);
                }
            }
        }