private void InternalSaveStaticBitmaps(RepeatedField <uint> sprites, DrawBitmapsDelegate drawFunc, int parts, int spriteType, int localStart, Assets.ContentSprites sprParser, int width, int height) { int singleSize = width * height; AsyncGraphics gfx = new AsyncGraphics(new Bitmap(Program.SEGMENT_DIMENTION, Program.SEGMENT_DIMENTION)); string filename; int x = 0, y = 0, z = 0; for (int i = 0; i < sprites.Count;) { Bitmap[] bitmapParts = new Bitmap[parts]; for (int m = 0; m < parts; m++) { if (i + m >= sprites.Count) { break; } bitmapParts[m] = sprParser.GetSprite(sprites[i + m]); } if (y >= Program.SEGMENT_DIMENTION) { filename = string.Format("sprites-{0}-{1}.png", localStart, localStart + (Program.BITMAP_SIZE / singleSize) - 1); m_Tasks.Add(gfx.SaveAndDispose(Path.Combine(m_ClientVersion.ToString(), "result", "sprites", filename))); m_JsonTokens.Add(new SpritesToken() { file = filename, spritetype = spriteType, firstspriteid = localStart, lastspriteid = localStart + (Program.BITMAP_SIZE / singleSize) - 1 }); localStart += Program.BITMAP_SIZE / singleSize; gfx = new AsyncGraphics(new Bitmap(Program.SEGMENT_DIMENTION, Program.SEGMENT_DIMENTION)); x = y = z = 0; } var tmpSmallBitmaps = bitmapParts; drawFunc(gfx, bitmapParts, x, y); m_Tasks.Add(gfx.DisposeOnDone(bitmapParts)); x += width; if (x >= Program.SEGMENT_DIMENTION) { y += height; x = 0; } if (i == sprites.Count) { break; } i = Math.Min(i + parts, sprites.Count); z++; } // save the last gfx int end = localStart + z; filename = string.Format("sprites-{0}-{1}.png", localStart, end - 1); m_Tasks.Add(gfx.SaveAndDispose(Path.Combine(m_ClientVersion.ToString(), "result", "sprites", filename))); m_JsonTokens.Add(new SpritesToken() { file = filename, spritetype = spriteType, firstspriteid = localStart, lastspriteid = end - 1 }); }
static void InternalSaveStaticBitmaps(RepeatedField <uint> sprites, DrawBitmapsDelegate drawFunc, int layers, int spriteType, int localStart, Core.Sprites.ContentSprites sprParser, int dX, int dY, int clientVersion) { int singleSize = dX * dY; AsyncGraphics gfx = new AsyncGraphics(new Bitmap(SEGMENT_DIMENTION, SEGMENT_DIMENTION)); string filename; int x = 0, y = 0, z = 0; for (int i = 0; i < sprites.Count;) { Bitmap[] smallBitmaps = new Bitmap[layers]; for (int m = 0; m < layers; m++) { if (i + m >= sprites.Count) { break; } smallBitmaps[m] = sprParser.GetSprite(sprites[i + m]); } if (y >= SEGMENT_DIMENTION) { filename = string.Format("sprites-{0}-{1}.png", localStart, localStart + (BITMAP_SIZE / singleSize) - 1); tasks.Add(gfx.SaveAndDispose(Path.Combine(clientVersion.ToString() + "/sprites", filename))); jsonTokens.Add(new SpritesToken() { file = filename, spritetype = spriteType, firstspriteid = localStart, lastspriteid = localStart + (BITMAP_SIZE / singleSize) - 1 }); localStart += BITMAP_SIZE / singleSize; gfx = new AsyncGraphics(new Bitmap(SEGMENT_DIMENTION, SEGMENT_DIMENTION)); x = y = z = 0; } var tmpSmallBitmaps = smallBitmaps; drawFunc(gfx, smallBitmaps, x, y); tasks.Add(gfx.DisposeOnDone(smallBitmaps)); x += dX; if (x >= SEGMENT_DIMENTION) { y += dY; x = 0; } if (i == sprites.Count) { break; } i = Math.Min(i + layers, sprites.Count); z++; } // save the last gfx int end = localStart + z; filename = string.Format("sprites-{0}-{1}.png", localStart, end - 1); tasks.Add(gfx.SaveAndDispose(Path.Combine(clientVersion.ToString(), "sprites", filename))); jsonTokens.Add(new SpritesToken() { file = filename, spritetype = spriteType, firstspriteid = localStart, lastspriteid = end - 1 }); }