public Image[] makeBigBlocks(int videoNo, int bigBlockNo, BigBlock[] bigBlockIndexes, int palleteNo, MapViewType smallObjectsViewType = MapViewType.Tiles, MapViewType curViewType = MapViewType.Tiles, int hierarchyLevel = 0) { int blockCount = ConfigScript.getBigBlocksCount(hierarchyLevel); var bigBlocks = new Image[blockCount]; Image[] smallBlocksPack; if (hierarchyLevel == 0) { smallBlocksPack = makeObjects(videoNo, bigBlockNo, palleteNo, smallObjectsViewType); } else { var bigBlockIndexesPrev = ConfigScript.getBigBlocksRecursive(hierarchyLevel - 1, bigBlockNo); smallBlocksPack = makeBigBlocks(videoNo, bigBlockNo, bigBlockIndexesPrev, palleteNo, smallObjectsViewType, curViewType, hierarchyLevel - 1); } //tt version hardcode Image[][] smallBlocksAll = null; bool smallBlockHasSubpals = bigBlockIndexes == null ? true : bigBlockIndexes[0].smallBlocksWithPal(); if (!smallBlockHasSubpals) { smallBlocksAll = new Image[4][]; for (int i = 0; i < 4; i++) { smallBlocksAll[i] = makeObjects(videoNo, bigBlockNo, palleteNo, smallObjectsViewType, i); } } else { smallBlocksAll = new Image[4][] { smallBlocksPack, smallBlocksPack, smallBlocksPack, smallBlocksPack }; } for (int btileId = 0; btileId < blockCount; btileId++) { Image b; if (ConfigScript.isBuildScreenFromSmallBlocks()) { var sb = smallBlocksPack[btileId]; //scale for small blocks b = UtilsGDI.ResizeBitmap(sb, (int)(sb.Width * 2), (int)(sb.Height * 2)); } else { b = bigBlockIndexes[btileId].makeBigBlock(smallBlocksAll); } if (curViewType == MapViewType.ObjNumbers) { b = VideoHelper.addObjNumber(b, btileId); } bigBlocks[btileId] = b; } return(bigBlocks); }
//make capcom screen image public Bitmap makeScreen(int scrNo, int levelNo, int videoNo, int bigBlockNo, int blockNo, int palleteNo, bool withBorders = true) { if (scrNo < 0) { return(VideoHelper.emptyScreen((int)(ConfigScript.getScreenWidth(levelNo) * 32), (int)(ConfigScript.getScreenHeight(levelNo) * 32))); } var bigBlocks = makeBigBlocks(videoNo, bigBlockNo, blockNo, palleteNo, MapViewType.Tiles, MapViewType.Tiles); //var bigBlocks = makeBigBlocks(videoNo, bigBlockNo, blockNo, palleteNo, MapViewType.ObjType,MapViewType.Tiles, withBorders); int[] indexes = Globals.getScreen(ConfigScript.screensOffset[levelNo], scrNo); int scrW = ConfigScript.getScreenWidth(0); //zero as screenNoForLevel int scrH = ConfigScript.getScreenHeight(0); //capcom hardcode var blockLayer1 = new BlockLayer() { screens = new int[1][] { indexes }, showLayer = true, blockWidth = 32, blockHeight = 32 }; return(new Bitmap(MapEditor.ScreenToImage(bigBlocks, new BlockLayer[] { blockLayer1 }, 0, 2.0f, false, 0, 0, scrW, scrH))); }