public Image Paint(int tileW, int tileH) { Image bitmap; try { checkImage(); bitmap = new Bitmap(image); Graphics e = Graphics.FromImage(bitmap); if (tileW > 0 && tileH > 0) { selectSetor(tileW, tileH); List <bool> list = walk_region[code]; for (i = 0; i < setor_actual.map_height; i++) { for (j = 0; j < setor_actual.map_width; j++) { Point loc = new Point((j * tileW) + (tileW / 2) - (global::EditorMapa2D.Properties.Resources.cross.Width / 2), (i * tileH) + (tileH / 2) - (global::EditorMapa2D.Properties.Resources.cross.Height / 2)); int w = Setor.ConvertNumero(new Point((j * tileW), (i * tileH)), tileW, tileH, setor_actual.map_width); if (list.Count > w && list[w]) { e.DrawImage(global::EditorMapa2D.Properties.Resources.cicle, loc); } else { e.DrawImage(global::EditorMapa2D.Properties.Resources.cross, loc); } } } for (i = 0; i < bitmap.Height; i += tileH) { e.DrawLine(Pens.Black, 0, i, bitmap.Width, i); } for (i = 0; i < bitmap.Width; i += tileW) { e.DrawLine(Pens.Black, i, 0, i, bitmap.Height); } } e.Dispose(); } finally { } return(bitmap); }
public bool setWalkRegion(Point e, int tileW, int tileH) { if (tileW > 0 && tileH > 0) { code = AddWalkRegion(tileW, tileH); List <bool> list = walk_region[code]; i = Setor.ConvertNumero(e, tileW, tileH, setor[code].map_width); if (list.Count > i) { list[i] = !list[i]; return(true); } } return(false); }
private string AddWalkRegion(int tileW, int tileH) { code = getCode(tileW, tileH); if (!setor.ContainsKey(code)) { checkImage(); Setor tmp = new Setor(Convert.ToInt32(image.Width / tileW), Convert.ToInt32(image.Height / tileH), tileW, tileH); setor.Add(code, tmp); List <bool> walk = new List <bool>(); for (i = 0; i < (tmp.map_width * tmp.map_height); i++) { walk.Add(true); } walk_region.Add(code, walk); tile_image.Add(code, new Dictionary <string, Image>()); } return(code); }
public Tileset(string path) { tileset_code = 0; code_builder = new StringBuilder(); walk_region = new Dictionary <string, List <bool> >(); setor = new Dictionary <string, Setor>(); setor_actual = null; tile_image = new Dictionary <string, Dictionary <string, Image> >(); if (path != string.Empty) { using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read)) { Image foto = new Bitmap(fs); using (MemoryStream stream = new MemoryStream()) { foto.Save(stream, foto.RawFormat); buffer = stream.ToArray(); } } } }
public Tileset(string path) { tileset_code = 0; code_builder = new StringBuilder(); walk_region = new Dictionary<string, List<bool>>(); setor = new Dictionary<string, Setor>(); setor_actual = null; tile_image = new Dictionary<string, Dictionary<string, Image>>(); if (path != string.Empty) { using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read)) { Image foto = new Bitmap(fs); using (MemoryStream stream = new MemoryStream()) { foto.Save(stream, foto.RawFormat); buffer = stream.ToArray(); } } } }
private string AddWalkRegion(int tileW, int tileH) { code = getCode(tileW, tileH); if (!setor.ContainsKey(code)) { checkImage(); Setor tmp = new Setor(Convert.ToInt32(image.Width / tileW), Convert.ToInt32(image.Height / tileH), tileW, tileH); setor.Add(code, tmp); List<bool> walk = new List<bool>(); for (i = 0; i < (tmp.map_width * tmp.map_height); i++) { walk.Add(true); } walk_region.Add(code, walk); tile_image.Add(code, new Dictionary<string, Image>()); } return code; }
public void selectSetor(int tileW, int tileH) { code = AddWalkRegion(tileW, tileH); setor_actual = setor[code]; }
private int[,] get_image_crop(Tile tile, out int index_image) { int[,] arr = new int[0, 0]; index_image = -1; try { if (world_export.tilesets.ContainsKey(tile.tileset_code)) { if (!tilesets.ContainsKey(tile.tileset_code)) { tilesets.Add(tile.tileset_code, new ProjectExportEGLTileSet()); } Tileset tileset = world_export.tilesets[tile.tileset_code]; ProjectExportEGLTileSet tmp = tilesets[tile.tileset_code]; if (tileset.tile_image.ContainsKey(tile.tile_code)) { if (!tmp.tile.ContainsKey(tile.tile_code)) { tmp.tile.Add(tile.tile_code, new Dictionary <string, ProjectExportEGLTile>()); } Dictionary <string, Image> list_image = tileset.tile_image[tile.tile_code]; Dictionary <string, ProjectExportEGLTile> listTile = tmp.tile[tile.tile_code]; if (list_image.ContainsKey(tile.tile_crop)) { if (!listTile.ContainsKey(tile.tile_crop)) { Image image = list_image[tile.tile_crop]; using (FileStream fs = new FileStream(path_export + "\\" + path_image + name_image + image_index + ".png", FileMode.Create)) { image.Save(fs, System.Drawing.Imaging.ImageFormat.Png); } index_image = image_index; image_index++; ProjectExportEGLTile tmpTile = new ProjectExportEGLTile(); tmpTile.image_idx = index_image; List <bool> list_walk = tileset.walk_region[tile.tile_code]; Setor setor = tileset.setor[tile.tile_code]; Rectangle sector = Tileset.convert_tile_crop(tile.tile_crop); int x = sector.X; int y = sector.Y; int iX = x / setor.tile_width; int iY = y / setor.tile_height; int iW = sector.Width / setor.tile_width; int iH = sector.Height / setor.tile_height; arr = new int[iW, iH]; int k = 1; for (i = 0; i < arr.GetLength(0); i++) { for (j = 0; j < arr.GetLength(1); j++) { k = Setor.ConvertNumero(new Point(((i + iX) * setor.tile_width), ((j + iY) * setor.tile_height)), setor.tile_width, setor.tile_height, setor.map_width); if (list_walk.Count > k) { arr[i, j] = list_walk[k] ? 1 : 0; } } } tmpTile.walk_region = arr; listTile.Add(tile.tile_crop, tmpTile); } else { ProjectExportEGLTile tmpTile = listTile[tile.tile_crop]; index_image = tmpTile.image_idx; arr = tmpTile.walk_region; } } } } } catch (Exception ex) { string error = ex.Message; } return(arr); }
private int OpenTileset(ProjectTileSet pTileSet) { int i = 0; try { Tileset tileset = new Tileset(); tileset.Name = pTileSet.tileset_name; tileset.tileset_code = pTileSet.tileset_code; tileset.buffer = pTileSet.buffer; for (i = 0; i < pTileSet.tiles.Length; i++) { ProjectTiles pTile = pTileSet.tiles[i]; Setor setor = new Setor(pTile.tileset_setor[0], pTile.tileset_setor[1], pTile.tileset_setor[2], pTile.tileset_setor[3]); string code = tileset.getCode(setor.tile_width, setor.tile_height); if (!tileset.setor.ContainsKey(code)) { tileset.setor.Add(code, setor); List<bool> walk_r = new List<bool>(); int j; for (j = 0; j < pTile.tileset_walk.Length; j++) walk_r.Add(pTile.tileset_walk[j]); tileset.walk_region.Add(code, walk_r); tileset.tile_image.Add(code, new Dictionary<string, Image>()); Dictionary<string, Image> tile_images = tileset.tile_image[code]; List<byte[]> image_l = pTile.tileset_images; string[] names_l = pTile.tileset_names; for (j = 0; j < names_l.Length; j++) { Image tile; using (MemoryStream ms = new MemoryStream(image_l[j])) { tile = Bitmap.FromStream(ms); } tile_images.Add(names_l[j], tile); } } } i = world.AddTileset(tileset); InsertTileset(tileset.Name, i); } catch (Exception ex) { string error = ex.Message; } return i; }
public void add_tile_set(Tileset tileset) { try { if (tileset == null) { return; } ProjectTileSet tmp = new ProjectTileSet(); tmp.tileset_name = tileset.Name; tmp.buffer = tileset.buffer; tmp.tileset_code = tileset.tileset_code; tmp.tiles = new ProjectTiles[tileset.setor.Count]; int i = 0; foreach (string key in tileset.setor.Keys) { ProjectTiles tmp_tiles = new ProjectTiles(); if (tileset.walk_region.ContainsKey(key)) { List <bool> walk_list = tileset.walk_region[key]; tmp_tiles.tileset_walk = new bool[walk_list.Count]; for (int j = 0; j < walk_list.Count; j++) { tmp_tiles.tileset_walk[j] = walk_list[j]; } } if (tileset.setor.ContainsKey(key)) { Setor sector = tileset.setor[key]; tmp_tiles.tileset_setor = new int[4]; tmp_tiles.tileset_setor[0] = sector.map_width; tmp_tiles.tileset_setor[1] = sector.map_height; tmp_tiles.tileset_setor[2] = sector.tile_width; tmp_tiles.tileset_setor[3] = sector.tile_height; } if (tileset.tile_image.ContainsKey(key)) { Dictionary <string, Image> list = tileset.tile_image[key]; tmp_tiles.tileset_names = new string[list.Count]; tmp_tiles.tileset_images = new List <byte[]>(); int j = 0; foreach (string names in list.Keys) { tmp_tiles.tileset_names[j] = names; Image crop_image = new Bitmap(list[names]); using (MemoryStream stream = new MemoryStream()) { crop_image.Save(stream, System.Drawing.Imaging.ImageFormat.Png); byte[] buffer = stream.ToArray(); tmp_tiles.tileset_images.Add(buffer); } j++; } } tmp.tiles[i] = tmp_tiles; i++; } tilesets.Add(tmp); } catch (Exception ex) { string error = ex.Message; } }