public static void Editor_Mapas_AutoCriação(Point Localização, Listas.Estruturas.Azulejo_Dados Dados, SFML.Graphics.Color Cor) { // Desenha os 4 mini azulejos for (byte i = 0; i <= 3; i++) { Point Destino = Localização, Fonte = Dados.Mini[i]; // Partes do azulejo switch (i) { case 1: Destino.X += 16; break; case 2: Destino.Y += 16; break; case 3: Destino.X += 16; Destino.Y += 16; break; } // Renderiza o mini azulejo Desenhar(Jan_Mapa, Tex_Azulejo[Dados.Azulejo], new Rectangle(Fonte.X, Fonte.Y, 16, 16), Editor_Mapas.Zoom(new Rectangle(Destino, new Size(16, 16))), Cor); } }
private void Redimensionar() { byte Largura_Nova = (byte)numLargura.Value, Altura_Nova = (byte)numAltura.Value; int Largura_Diferença, Altura_Diferença; // Somente se necessário if (Listas.Mapa[Selecionado].Largura == Largura_Nova && Listas.Mapa[Selecionado].Altura == Altura_Nova) { return; } // Redimensiona os azulejos Listas.Estruturas.Azulejo_Dados[,] TempAzulejo; Listas.Estruturas.Mapas_Azulejo_Dados[,] TempAzulejo2; // Calcula a diferença Largura_Diferença = Largura_Nova - Listas.Mapa[Selecionado].Largura; Altura_Diferença = Altura_Nova - Listas.Mapa[Selecionado].Altura; // Azulejo1 for (byte c = 0; c <= Listas.Mapa[Selecionado].Camada.Count - 1; c++) { TempAzulejo = new Listas.Estruturas.Azulejo_Dados[Largura_Nova + 1, Altura_Nova + 1]; for (byte x = 0; x <= Largura_Nova; x++) { for (byte y = 0; y <= Altura_Nova; y++) { // Redimensiona para frente if (!chkInvesamente.Checked) { if (x <= Listas.Mapa[Selecionado].Largura && y <= Listas.Mapa[Selecionado].Altura) { TempAzulejo[x, y] = Listas.Mapa[Selecionado].Camada[c].Azulejo[x, y]; } else { TempAzulejo[x, y] = new Listas.Estruturas.Azulejo_Dados(); TempAzulejo[x, y].Mini = new Point[4]; } } // Redimensiona para trás else { if (x < Largura_Diferença || y < Altura_Diferença) { TempAzulejo[x, y] = new Listas.Estruturas.Azulejo_Dados(); TempAzulejo[x, y].Mini = new Point[4]; } else { TempAzulejo[x, y] = Listas.Mapa[Selecionado].Camada[c].Azulejo[x - Largura_Diferença, y - Altura_Diferença]; } } } } // Define os dados Listas.Mapa[Selecionado].Camada[c].Azulejo = TempAzulejo; } // Dados do azulejo TempAzulejo2 = new Listas.Estruturas.Mapas_Azulejo_Dados[Largura_Nova + 1, Altura_Nova + 1]; for (byte x = 0; x <= Largura_Nova; x++) { for (byte y = 0; y <= Altura_Nova; y++) { // Redimensiona para frente if (!chkInvesamente.Checked) { if (x <= Listas.Mapa[Selecionado].Largura && y <= Listas.Mapa[Selecionado].Altura) { TempAzulejo2[x, y] = Listas.Mapa[Selecionado].Azulejo[x, y]; } else { TempAzulejo2[x, y] = new Listas.Estruturas.Mapas_Azulejo_Dados(); TempAzulejo2[x, y].Bloqueio = new bool[4]; } } // Redimensiona para trás else { if (x < Largura_Diferença || y < Altura_Diferença) { TempAzulejo2[x, y] = new Listas.Estruturas.Mapas_Azulejo_Dados(); TempAzulejo2[x, y].Bloqueio = new bool[4]; } else { TempAzulejo2[x, y] = Listas.Mapa[Selecionado].Azulejo[x - Largura_Diferença, y - Altura_Diferença]; } } } } // Define os dados Listas.Mapa[Selecionado].Azulejo = TempAzulejo2; }