Exemplo n.º 1
0
        /// <summary>
        /// Pega lixo em determinada coordenada.
        /// </summary>
        /// <param name="coordenadas">Coordenadas de onde o lixo está.</param>
        /// <returns>Se conseguiu pegar o lixo ou não.</returns>
        public bool PegaLixo(Coordenadas coordenadas)
        {
            Entidade entidade = Ambiente.GetEntidade(coordenadas);
            Lixo     lixo     = null;

            if (entidade is Multiplo)
            {
                lixo = (entidade as Multiplo).Entidades.Find(e => e is Lixo) as Lixo;
            }
            else if (entidade is Lixo)
            {
                lixo = entidade as Lixo;
            }

            if (lixo != null && (lixo.Tipo == TipoLixo.ORGANICO && !SacoLixoOrganicoEstaCheio() || lixo.Tipo == TipoLixo.SECO && !SacoLixoSecoEstaCheio()))
            {
                bool sucesso = VaiAte(coordenadas);

                Multiplo multiplo = Ambiente.GetEntidade(this.Coordenadas) as Multiplo;

                if (multiplo != null && sucesso)
                {
                    sucesso = false;

                    lixo = multiplo.Entidades.Find(e => e is Lixo) as Lixo;

                    if (lixo.Tipo == TipoLixo.ORGANICO && !SacoLixoOrganicoEstaCheio())
                    {
                        this.SacoLixoOrganico.Add(lixo);
                        multiplo.Entidades.Remove(lixo);
                        sucesso = true;
                    }
                    else if (lixo.Tipo == TipoLixo.SECO && !SacoLixoSecoEstaCheio())
                    {
                        this.SacoLixoSeco.Add(lixo);
                        multiplo.Entidades.Remove(lixo);
                        sucesso = true;
                    }

                    if (multiplo.Entidades.Count <= 1)
                    {
                        Ambiente.AtualizaEntidade(this);
                    }
                    else
                    {
                        Ambiente.AtualizaEntidade(multiplo);
                    }
                }

                return(sucesso);
            }

            return(false);
        }
Exemplo n.º 2
0
        public bool DespejaLixo(Coordenadas coordenadas)
        {
            Lixeira lixeira = Ambiente.GetEntidade(coordenadas) as Lixeira;
            ObservableCollection <Lixo> sacoLixo = null;

            if (lixeira.Tipo == TipoLixo.ORGANICO)
            {
                sacoLixo = this.SacoLixoOrganico;
            }
            else if (lixeira.Tipo == TipoLixo.SECO)
            {
                sacoLixo = this.SacoLixoSeco;
            }

            if (lixeira != null && sacoLixo != null)
            {
                VaiAte(coordenadas);

                if (EstaDiretamenteAoLado(coordenadas))
                {
                    while (sacoLixo.Count != 0 && !lixeira.EstaCheia())
                    {
                        Lixo lixo = sacoLixo.First();
                        if (lixo != null)
                        {
                            lixeira.Lixos.Add(lixo);
                            sacoLixo.Remove(lixo);
                        }
                    }

                    Ambiente.AtualizaEntidade(lixeira);
                    Ambiente.AtualizaEntidade(this);

                    if (sacoLixo.Count == 0)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }