public static NTFT Transform_Tile(NSCR_s nscr, NTFT tiles, int startInfo = 0) { NTFT ntft = new NTFT(); List <byte[]> list = new List <byte[]>(); List <byte> list2 = new List <byte>(); for (int i = startInfo; i < nscr.section.mapData.Length; i++) { if (nscr.section.mapData[i].nTile >= tiles.tiles.Length) { nscr.section.mapData[i].nTile = 0; } byte[] tile = tiles.tiles[nscr.section.mapData[i].nTile]; if (nscr.section.mapData[i].xFlip == 1) { tile = XFlip(tile); } if (nscr.section.mapData[i].yFlip == 1) { tile = YFlip(tile); } list.Add(tile); list2.Add(nscr.section.mapData[i].nPalette); } ntft.nPalette = list2.ToArray(); ntft.tiles = list.ToArray(); return(ntft); }
public static Bitmap Get_Image(NTFT tile, Color[][] palette, TileOrder tileOrder, int startTile, int tilesX, int tilesY, int zoom = 1) { switch (tileOrder) { case TileOrder.NoTiled: return(No_Tile(tile, palette, startTile, tilesX, tilesY, zoom)); case TileOrder.Horizontal: return(Horizontal(tile, palette, startTile, tilesX, tilesY, zoom)); case TileOrder.Vertical: throw new NotImplementedException(); } return(new Bitmap(0, 0)); }
private static Bitmap Horizontal(NTFT tile, Color[][] palette, int startTile, int tilesX, int tilesY, int zoom = 1) { if (zoom <= 0) { zoom = 1; } Bitmap bitmap = new Bitmap((tilesX * 8) * zoom, (tilesY * 8) * zoom); tile.tiles = Convertir.BytesToTiles(Convertir.TilesToBytes(tile.tiles, startTile)); startTile = 0; for (int i = 0; i < tilesY; i++) { for (int j = 0; j < tilesX; j++) { for (int k = 0; k < 8; k++) { for (int m = 0; m < 8; m++) { for (int n = 0; n < zoom; n++) { for (int num6 = 0; num6 < zoom; num6++) { try { if (tile.tiles[j + (i * tilesX)].Length == 0) { return(bitmap); } bitmap.SetPixel(((m + (j * 8)) * zoom) + num6, ((k + (i * 8)) * zoom) + n, palette[tile.nPalette[startTile]][tile.tiles[startTile][m + (k * 8)]]); } catch { return(bitmap); } } } } } startTile++; } } return(bitmap); }
private static Bitmap No_Tile(NTFT tile, Color[][] palette, int salto, int width, int height, int zoom = 1) { if (zoom <= 0) { zoom = 1; } Bitmap bitmap = new Bitmap(width * zoom, height * zoom); for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { for (int k = 0; k < zoom; k++) { for (int m = 0; m < zoom; m++) { try { if (tile.tiles[0].Length == 0) { return(bitmap); } if (palette[tile.nPalette[0]].Length <= tile.tiles[0][(j + (i * width)) + salto]) { return(bitmap); } Color color = palette[tile.nPalette[0]][tile.tiles[0][(j + (i * width)) + salto]]; bitmap.SetPixel((j * zoom) + m, (i * zoom) + k, color); } catch { return(bitmap); } } } } } return(bitmap); }