public void Transfer(byte[][] tilemaps, Map areaMap, CollisionMap collisionMap, Point start, Point stop) { this.Start = start; int offset = 0, o = 0, p = 0; Size = new Size(stop.X - start.X, stop.Y - start.Y); this.Tilemaps_bytes[0] = new byte[(Size.Width * Size.Height) / 128]; this.Tilemaps_bytes[1] = new byte[(Size.Width * Size.Height) / 128]; this.Tilemaps_bytes[2] = new byte[(Size.Width * Size.Height) / 256]; for (int y = start.Y / 16, b = 0; y < stop.Y / 16; y++, b++) { for (int x = start.X / 16, a = 0; x < stop.X / 16; x++, a++, o++) { offset = (x * 2) + (y * 128); this.Tilemaps_bytes[0][o * 2] = tilemaps[0][offset]; this.Tilemaps_bytes[0][o * 2 + 1] = tilemaps[0][offset + 1]; this.Tilemaps_bytes[1][o * 2] = tilemaps[1][offset]; this.Tilemaps_bytes[1][o * 2 + 1] = tilemaps[1][offset + 1]; this.Tilemaps_bytes[2][o] = tilemaps[2][y * 64 + x]; } } for (int y = start.Y; y < stop.Y; y++) { for (int x = start.X; x < stop.X; x++) { p = collision.PixelTiles[y * 1024 + x] * 2; CollisionMap_bytes[p] = collisionMap.Tilemap_bytes[p]; CollisionMap_bytes[p + 1] = collisionMap.Tilemap_bytes[p + 1]; } } }
/// <summary> /// Called when the collision map has been changed by the user. /// </summary> private void CollisionMapChanged() { collisionMap = new CollisionMap(map); collisionMap.Image = null; tilemapForm.Picture.Invalidate(); }