public void CleaveVertically(int leftHalfTileWidth)
{
if (leftHalfTileWidth > 0 && leftHalfTileWidth < screen.Width)
{
var leftSide = screen.Layers[0].Tiles.GetTiles(Point.Empty, leftHalfTileWidth, Height);
var rightSide = screen.Layers[0].Tiles.GetTiles(new Point(leftHalfTileWidth, 0), Width - leftHalfTileWidth, Height);
var leftScreen = Stage.AddScreen(Stage.FindNextScreenId().ToString(), leftHalfTileWidth, Height);
var rightScreen = Stage.AddScreen(Stage.FindNextScreenId().ToString(), Width - leftHalfTileWidth, Height);
leftScreen.screen.Layers[0].Tiles.ChangeTiles(Point.Empty, leftSide);
rightScreen.screen.Layers[0].Tiles.ChangeTiles(Point.Empty, rightSide);
foreach (var join in this.Joins.ToArray())
{
Stage.RemoveJoin(join);
}
Stage.RemoveScreen(this);
Stage.AddJoin(new Join() {
direction = JoinDirection.Both,
type = JoinType.Vertical,
screenOne = leftScreen.Name,
screenTwo = rightScreen.Name,
offsetOne = 0,
offsetTwo = 0,
Size = Height
});
}
}