public ITileBrush DrawOn(ScreenDocument screen, int tile_x, int tile_y)
{
TileBrush undo = new TileBrush(Width, Height);
bool changed = false;
foreach (TileBrushCell[] col in cells) {
foreach (TileBrushCell cell in col) {
var old = screen.TileAt(cell.x + tile_x, cell.y + tile_y);
if (old == null)
continue;
undo.AddTile(old, cell.x, cell.y);
if (old.Id != cell.tile.Id) {
changed = true;
screen.ChangeTile(cell.x + tile_x, cell.y + tile_y, cell.tile.Id);
}
}
}
if (changed) return undo;
return null;
}