public static void Editor_Azulejo_BloqDirecional(byte x, byte y) { Editor_Azulejos Objetos = Editor_Azulejos.Objetos; Point Azulejo = new Point(Objetos.scrlAzulejoX.Value + x, Objetos.scrlAzulejoY.Value + y); byte Y; // Previni erros if (Azulejo.X > Listas.Azulejo[Objetos.scrlAzulejo.Value].Azulejo.GetUpperBound(0)) { return; } if (Azulejo.Y > Listas.Azulejo[Objetos.scrlAzulejo.Value].Azulejo.GetUpperBound(1)) { return; } for (byte i = 0; i <= (byte)Globais.Direções.Quantidade - 1; i++) { // Estado do bloqueio if (Listas.Azulejo[Objetos.scrlAzulejo.Value].Azulejo[Azulejo.X, Azulejo.Y].Bloqueio[i]) { Y = 8; } else { Y = 0; } // Renderiza Desenhar(Jan_Azulejo, Tex_Direções, x * Globais.Grade + Globais.Bloqueio_Posição(i).X, y * Globais.Grade + Globais.Bloqueio_Posição(i).Y, i * 8, Y, 6, 6); } }
private void picAzulejo_MouseDown(object sender, MouseEventArgs e) { Point Localização = new Point((e.X + scrlAzulejoX.Value * Globais.Grade) / Globais.Grade, (e.Y + scrlAzulejoY.Value * Globais.Grade) / Globais.Grade); Point Azulejo_Dif = new Point(e.X - e.X / Globais.Grade * Globais.Grade, e.Y - e.Y / Globais.Grade * Globais.Grade); // Previni erros if (Localização.X > Listas.Azulejo[Objetos.scrlAzulejo.Value].Azulejo.GetUpperBound(0)) { return; } if (Localização.Y > Listas.Azulejo[Objetos.scrlAzulejo.Value].Azulejo.GetUpperBound(1)) { return; } // Atributos if (optAtributos.Checked) { // Define if (e.Button == MouseButtons.Left) { Listas.Azulejo[scrlAzulejo.Value].Azulejo[Localização.X, Localização.Y].Atributo = (byte)Atributo; } // Remove else if (e.Button == MouseButtons.Right) { Listas.Azulejo[scrlAzulejo.Value].Azulejo[Localização.X, Localização.Y].Atributo = 0; } } // Bloqueio direcional else if (optBloqDirecional.Checked) { for (byte i = 0; i <= (byte)Globais.Direções.Quantidade - 1; i++) { if (Azulejo_Dif.X >= Globais.Bloqueio_Posição(i).X&& Azulejo_Dif.X <= Globais.Bloqueio_Posição(i).X + 8) { if (Azulejo_Dif.Y >= Globais.Bloqueio_Posição(i).Y&& Azulejo_Dif.Y <= Globais.Bloqueio_Posição(i).Y + 8) { // Altera o valor de bloqueio Listas.Azulejo[scrlAzulejo.Value].Azulejo[Localização.X, Localização.Y].Bloqueio[i] = !Listas.Azulejo[scrlAzulejo.Value].Azulejo[Localização.X, Localização.Y].Bloqueio[i]; } } } } }
public static void Editor_Mapas_Mapa_BloqDirecional(short Índice, byte x, byte y) { Point Azulejo = new Point(Editor_Mapas.Objetos.scrlMapaX.Value + x, Editor_Mapas.Objetos.scrlMapaY.Value + y); byte Y; // Apenas se necessário if (!Editor_Mapas.Objetos.butMAtributos.Checked) { return; } if (!Editor_Mapas.Objetos.optABloqueioDir.Checked) { return; } // Previni erros if (Azulejo.X > Listas.Mapa[Índice].Azulejo.GetUpperBound(0)) { return; } if (Azulejo.Y > Listas.Mapa[Índice].Azulejo.GetUpperBound(1)) { return; } for (byte i = 0; i <= (byte)Globais.Direções.Quantidade - 1; i++) { // Estado do bloqueio if (Listas.Mapa[Índice].Azulejo[Azulejo.X, Azulejo.Y].Bloqueio[i]) { Y = 8; } else { Y = 0; } // Renderiza Desenhar(Jan_Mapa, Tex_Direções, x * Globais.Grade + Globais.Bloqueio_Posição(i).X, y * Globais.Grade + Globais.Bloqueio_Posição(i).Y, i * 8, Y, 6, 6); } }