public static void Mapa(short Índice) { // Cria um arquivo temporário Listas.Estruturas.Mapas Dados = Listas.Mapa[Índice]; FileInfo Arquivo = new FileInfo(Diretórios.Mapas_Dados.FullName + Índice + Diretórios.Formato); BinaryWriter Binário = new BinaryWriter(Arquivo.OpenWrite()); // Escreve os dados Binário.Write((short)(Dados.Revisão + 1)); Binário.Write(Dados.Nome); Binário.Write(Dados.Largura); Binário.Write(Dados.Altura); Binário.Write(Dados.Moral); Binário.Write(Dados.Panorama); Binário.Write(Dados.Música); Binário.Write(Dados.Coloração); Binário.Write(Dados.Clima.Tipo); Binário.Write(Dados.Clima.Intensidade); Binário.Write(Dados.Fumaça.Textura); Binário.Write(Dados.Fumaça.VelocidadeX); Binário.Write(Dados.Fumaça.VelocidadeY); Binário.Write(Dados.Fumaça.Transparência); Binário.Write(Dados.LuzGlobal); Binário.Write(Dados.Iluminação); // Ligações for (short i = 0; i <= (short)Globais.Direções.Quantidade - 1; i++) { Binário.Write(Dados.Ligação[i]); } // Camadas Binário.Write((byte)(Dados.Camada.Count - 1)); for (byte i = 0; i <= Dados.Camada.Count - 1; i++) { Binário.Write(Dados.Camada[i].Nome); Binário.Write(Dados.Camada[i].Tipo); // Azulejos for (byte x = 0; x <= Dados.Largura; x++) { for (byte y = 0; y <= Dados.Altura; y++) { Binário.Write(Dados.Camada[i].Azulejo[x, y].x); Binário.Write(Dados.Camada[i].Azulejo[x, y].y); Binário.Write(Dados.Camada[i].Azulejo[x, y].Azulejo); Binário.Write(Dados.Camada[i].Azulejo[x, y].Automático); } } } // Dados específicos dos azulejos for (byte x = 0; x <= Listas.Mapa[Índice].Largura; x++) { for (byte y = 0; y <= Listas.Mapa[Índice].Altura; y++) { Binário.Write(Dados.Azulejo[x, y].Atributo); Binário.Write(Dados.Azulejo[x, y].Dado_1); Binário.Write(Dados.Azulejo[x, y].Dado_2); Binário.Write(Dados.Azulejo[x, y].Dado_3); Binário.Write(Dados.Azulejo[x, y].Dado_4); Binário.Write(Dados.Azulejo[x, y].Zona); // Bloqueio direcional for (byte i = 0; i <= (byte)Globais.Direções.Quantidade - 1; i++) { Binário.Write(Dados.Azulejo[x, y].Bloqueio[i]); } } } // Luzes Binário.Write((byte)Dados.Luz.Count); if (Dados.Luz.Count > 0) { for (byte i = 0; i <= Dados.Luz.Count - 1; i++) { Binário.Write(Dados.Luz[i].X); Binário.Write(Dados.Luz[i].Y); Binário.Write(Dados.Luz[i].Largura); Binário.Write(Dados.Luz[i].Altura); } } // Itens Binário.Write((byte)Dados.NPC.Count); if (Dados.NPC.Count > 0) { for (byte i = 0; i <= Dados.NPC.Count - 1; i++) { Binário.Write(Dados.NPC[i].Índice); Binário.Write(Dados.NPC[i].Zona); Binário.Write(Dados.NPC[i].Aparecer); Binário.Write(Dados.NPC[i].X); Binário.Write(Dados.NPC[i].Y); } } // Fecha o sistema Binário.Dispose(); }
public static void Editor_Mapas_Mapa_Azulejos(short Índice) { Editor_Mapas Objetos = Editor_Mapas.Objetos; Listas.Estruturas.Mapas Mapa = Listas.Mapa[Índice]; Listas.Estruturas.Azulejo_Dados Dados; int Início_X = Objetos.scrlMapaX.Value, Início_Y = Objetos.scrlMapaY.Value; SFML.Graphics.Color Cor; System.Drawing.Color TempCor = System.Drawing.Color.FromArgb(Mapa.Coloração); // Desenha todos os azulejos for (byte c = 0; c <= Mapa.Camada.Count - 1; c++) { // Somente se necessário if (!Objetos.lstCamadas.Items[c].Checked) { continue; } // Transparência da camada Cor = CCor(255, 255, 255); if (Objetos.butEdição.Checked && Objetos.butMNormal.Checked) { if (Editor_Mapas.Objetos.lstCamadas.SelectedIndices.Count > 0) { if (c != Editor_Mapas.Objetos.lstCamadas.SelectedItems[0].Index) { Cor = CCor(255, 255, 255, 150); } } } else { Cor = CCor(TempCor.R, TempCor.G, TempCor.B); } // Continua for (int x = Início_X; x <= Editor_Mapas.AzulejosVisíveis.Width; x++) { for (int y = Início_Y; y <= Editor_Mapas.AzulejosVisíveis.Height; y++) { if (Mapa.Camada[c].Azulejo[x, y].Azulejo > 0) { // Dados Dados = Mapa.Camada[c].Azulejo[x, y]; Rectangle Fonte = new Rectangle(new Point(Dados.x * Globais.Grade, Dados.y * Globais.Grade), Globais.Grade_Tamanho); Rectangle Destino = new Rectangle(new Point((x - Início_X) * Globais.Grade, (y - Início_Y) * Globais.Grade), Globais.Grade_Tamanho); // Desenha o azulejo if (!Mapa.Camada[c].Azulejo[x, y].Automático) { Desenhar(Jan_Mapa, Tex_Azulejo[Dados.Azulejo], Fonte, Editor_Mapas.Zoom(Destino), Cor); } else { Editor_Mapas_AutoCriação(Destino.Location, Dados, Cor); } } } } } }