public void LimparListas()
        {
            /* Limpa todas as listas */

            EntidadesIntangiveis.Clear();
            EntidadesTangiveis.Clear();
            Armadilhas.Clear();
            Mecanismos.Clear();
            npcs.Clear();
            Escadas.Clear();
        }
        public void ExcluirEntidade(float x, float y)
        {
            /* Percorre todas as listas e exclui as entidades que estão na posição recebida */

            Vector2f vec = GetPosicaoAjustada(x, y);

            for (int i = EntidadesIntangiveis.Count - 1; i >= 0 && EntidadesIntangiveis.Count > 0; i--)
            {
                if (EntidadesIntangiveis[i].ESprite.Position.X == vec.X && EntidadesIntangiveis[i].ESprite.Position.Y == vec.Y)
                {
                    EntidadesIntangiveis.Remove(EntidadesIntangiveis[i]);
                }
            }

            for (int i = EntidadesTangiveis.Count - 1; i >= 0 && EntidadesTangiveis.Count > 0; i--)
            {
                if (EntidadesTangiveis[i].ESprite.Position.X == vec.X && EntidadesTangiveis[i].ESprite.Position.Y == vec.Y)
                {
                    EntidadesTangiveis.Remove(EntidadesTangiveis[i]);
                }
            }

            for (int i = Mecanismos.Count - 1; i >= 0 && Mecanismos.Count > 0; i--)
            {
                if (Mecanismos[i].ESprite.Position.X == vec.X && Mecanismos[i].ESprite.Position.Y == vec.Y)
                {
                    Mecanismos.Remove(Mecanismos[i]);
                }
            }

            for (int i = Armadilhas.Count - 1; i >= 0 && Armadilhas.Count > 0; i--)
            {
                if (Armadilhas[i].ESprite.Position.X == vec.X && Armadilhas[i].ESprite.Position.Y == vec.Y)
                {
                    Armadilhas.Remove(Armadilhas[i]);
                }
            }

            for (int i = npcs.Count - 1; i >= 0 && npcs.Count > 0; i--)
            {
                if (npcs[i].ESprite.Position.X == vec.X && npcs[i].ESprite.Position.Y == vec.Y)
                {
                    npcs.Remove(npcs[i]);
                }
            }

            for (int i = Escadas.Count - 1; i >= 0 && Escadas.Count > 0; i--)
            {
                if (Escadas[i].ESprite.Position.X == vec.X && Escadas[i].ESprite.Position.Y == vec.Y)
                {
                    Escadas.Remove(Escadas[i]);
                }
            }
        }
        public void InserirEntidade(float x, float y, int posicaoEntidadeX = -1, int posicaoEntidadeY = -1)
        {
            /* Cria uma nova entidade dado sua posição e sua localização dentro do sprite principal */

            // Retorna as coordenadas ajustadas de uma entidade. Transforma as coordenadas recebidas do mouse para as coordenadas ajustadas no mundo
            Vector2f vec = GetPosicaoAjustada(x, y);

            TipoEntidade tipo;

            if (posicaoEntidadeX == -1)
            {
                posicaoEntidadeX = PosicaoEntidade.X;
            }
            if (posicaoEntidadeY == -1)
            {
                posicaoEntidadeY = PosicaoEntidade.Y;
            }

            // Define se a entidade é tangível ou intágivel
            if ((posicaoEntidadeX == 1 && posicaoEntidadeY == 9) ||
                (posicaoEntidadeX == 3 && posicaoEntidadeY == 9) ||
                (posicaoEntidadeX == 0 && posicaoEntidadeY == 32) ||
                (posicaoEntidadeX == 2 && posicaoEntidadeY == 0) ||
                (posicaoEntidadeX == 3 && posicaoEntidadeY == 0))
            {
                tipo = TipoEntidade.Intangivel;
            }
            else
            {
                tipo = TipoEntidade.Tangivel;
            }

            if (!HaEntidadeAqui(vec.X, vec.Y, tipo))
            {
                // Dimensões de um bloco na textura principal
                int comprimento = (int)(spritePrincipal.Texture.Size.X / Informacoes.qtdEntidades.X);
                int altura      = (int)(spritePrincipal.Texture.Size.Y / Informacoes.qtdEntidades.Y);

                // Encontra e recorta na textura principal a nova textura da entidade baseada na coluna e na linha recebidas
                IntRect rect = new IntRect(posicaoEntidadeX * comprimento, posicaoEntidadeY * altura, comprimento, altura);
                spritePrincipal.TextureRect = rect;
                Sprite s = new Sprite(spritePrincipal);
                s.Origin   = new Vector2f(comprimento / 2, altura / 2);
                s.Position = new Vector2f(vec.X, vec.Y);

                // Uma nova entidade será criada dependendo de qual objeto o jogador selecionou no menu
                if ((posicaoEntidadeX >= 1 && posicaoEntidadeX <= 4) && posicaoEntidadeY == 4)
                {
                    Armadilha a = new Armadilha(s, tipo, TipoArmadilha.Atirador, posicaoEntidadeX, posicaoEntidadeY);
                    EntidadesTangiveis.Add(a);
                    Armadilhas.Add(a);
                }
                else if (posicaoEntidadeX == 4 && posicaoEntidadeY == 3)
                {
                    Armadilha a = new Armadilha(s, tipo, TipoArmadilha.Espinhos, posicaoEntidadeX, posicaoEntidadeY);
                    EntidadesTangiveis.Add(a);
                    Armadilhas.Add(a);
                }
                else if (posicaoEntidadeX == 0 && (posicaoEntidadeY == 4 || posicaoEntidadeY == 5))
                {
                    Mecanismo m = new Mecanismo(s, tipo, posicaoEntidadeX, posicaoEntidadeY);
                    EntidadesTangiveis.Add(m);
                    Mecanismos.Add(m);
                }
                else if (posicaoEntidadeX == 0 && posicaoEntidadeY == 1)
                {
                    Entidade e = new Entidade(s, tipo, posicaoEntidadeX, posicaoEntidadeY);
                    EntidadesTangiveis.Add(e);
                    npcs.Add(e);
                }
                else if (posicaoEntidadeY == 6 && (posicaoEntidadeX == 2 ||
                                                   posicaoEntidadeX == 3 ||
                                                   posicaoEntidadeX == 4))
                {
                    Escada e = new Escada(s, tipo, posicaoEntidadeX, posicaoEntidadeY);
                    EntidadesTangiveis.Add(e);
                    Escadas.Add(e);
                }
                else
                {
                    Entidade aux = new Entidade(s, tipo, posicaoEntidadeX, posicaoEntidadeY);

                    if (tipo == TipoEntidade.Intangivel)
                    {
                        EntidadesIntangiveis.Add(aux);
                    }
                    else
                    {
                        EntidadesTangiveis.Add(aux);
                    }
                }
            }
        }