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