コード例 #1
0
    public bool Reciclar(ObjReciclavel reciclavel)
    {
        if (listaReciclando.Count >= TamanhoLista())
        {
            return false;
        }

        reciclavel.Reciclar(transform, ultimaDuracao);
        listaReciclando.Add(reciclavel);

        ObjGerenciadorLixo.CriarXP(
            xpAoMandarReciclar, reciclavel.transform);

        if (listaReciclando.Count == 1)
        {
            proximoTempoReciclagem = Time.time + DuracaoReciclagemAtual();
        }
        return true;
    }
コード例 #2
0
    public static bool Adicionar(ObjReciclavel reciclavel)
    {
        if (instancia == null) return false;

        lock(instancia.listaReciclaveis)
        {
            try
            {
                if (!instancia.listaReciclaveis.Contains(reciclavel))
                {
                    reciclavel.transform.SetParent(
                        instancia.transform, false);

                    instancia.listaReciclaveis.Add(reciclavel);
                }
                return true;
            }
            catch (UnityException e)
            {
                Debug.Log (e.Message);
            }
        }
        return false;
    }
コード例 #3
0
    public static void VerificarSoltarReciclavel(
		ObjReciclavel reciclavel, Vector2 area)
    {
        foreach(ObjAreaReciclavel oar in instancia.areasReciclagem)
        {
            if (oar.tipo == reciclavel.tipo)
            {
                Vector2 p 	= reciclavel.transform.position;
                Vector2 o	= oar.transform.position;
                Vector2 a	= (oar.area / 2) *
                    FuncoesCamera.relacaoAltura;

                if (p.x >= o.x - a.x &&
                    p.x <= o.x + a.x &&
                    p.y >= o.y - a.y &&
                    p.y <= o.y + a.y)
                {
                    if (!oar.Reciclar(reciclavel))
                    {
                        ManterNaArea(reciclavel.transform, area);
                        Som.Tocar(Som.Tipo.ErrarLixeira);
                    }
                }
                else
                {
                    ManterNaArea(reciclavel.transform, area);
                    //Som.Tocar(Som.Tipo.ErrarLixeira);
                }
            }
            /*
            else
            {
                ManterNaArea(reciclavel.transform, area);
                Debug.Log("Nome: " + instancia.gameObject.name + " - Tipo diferente");
            }
            */
        }
    }
コード例 #4
0
    public static bool Remover(ObjReciclavel reciclavel)
    {
        if (instancia == null) return false;

        lock(instancia.listaReciclaveis)
        {
            try
            {
                if (instancia.listaReciclaveis.Contains(reciclavel))
                {
                    instancia.listaReciclaveis.Remove(reciclavel);
                }
                return true;
            }
            catch (UnityException e)
            {
                Debug.Log (e.Message);
            }
        }
        return false;
    }
コード例 #5
0
    public static void VerificarSoltarReciclavel(
		ObjReciclavel reciclavel, Vector2 area)
    {
        foreach(ObjAreaReciclavel oar in instancia.areasReciclagem)
        {
            if (oar.tipo == reciclavel.tipo)
            {
                Vector2 p 	= reciclavel.transform.position;
                Vector2 o	= oar.transform.position;
                Vector2 a	= (oar.area / 2) *
                    FuncoesCamera.relacaoAltura;

                if (p.x >= o.x - a.x &&
                    p.x <= o.x + a.x &&
                    p.y >= o.y - a.y &&
                    p.y <= o.y + a.y)
                {
                    if (!oar.Reciclar(reciclavel))
                    {
                        ManterNaArea(reciclavel.transform, area);
                    }
                }
                else
                {
                    ManterNaArea(reciclavel.transform, area);
                }
            }
        }
    }