/// <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); }
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); }