private void PositionCell() { if (this.BoardSize == 0) { return; } int ups = (this.BoardX - this.BoardY) + this.BoardSize - 1; double across = this.BoardX + this.BoardY; this.DisplayWidth = HexagonGeometry.CellWidth(this.CellSideDisplayLength); this.DisplayHeight = HexagonGeometry.CellHeight(this.CellSideDisplayLength); this.CanvasY = this.VerticalOffset + (ups * this.DisplayHeight / 2); this.CanvasX = this.HorizontalOffset + (across * this.DisplayWidth / 2); bool lastRowX = this.BoardX == this.BoardSize - 1; bool lastRowY = this.BoardY == this.BoardSize - 1; this.BottomRightLineVisible = lastRowX.ToVisibility(); this.BottomLineVisible = (this.BoardY == 0 || lastRowX).ToVisibility(); this.TopRightLineVisible = lastRowY.ToVisibility(); this.BottomLineBrush = this.CalculateBottomLineBrush(); this.TopLineBrush = this.CalculateTopLineBrush(); this.TopLeftLineBrush = this.CalculateTopLeftLineBrush(); this.BottomLeftLineBrush = this.CalculateBottomLeftLineBrush(); this.BottomRightLineBrush = this.CalculateBottomRightLineBrush(); this.TopRightLineBrush = this.CalculateTopRightLineBrush(); }
public void SetActualBoardSize(Size newSize) { double cellSideDisplayLength = HexagonGeometry.CalculateSideLength(this.BoardSize, newSize.Width, newSize.Height); double verticalOffset = HexagonGeometry.CalculateVerticalOffset(this.BoardSize, newSize.Height, cellSideDisplayLength); double horizontalOffset = HexagonGeometry.CalculateHorizontalOffset(this.BoardSize, newSize.Width, cellSideDisplayLength); foreach (HexCellViewModel cell in this.Cells) { cell.VerticalOffset = verticalOffset; cell.HorizontalOffset = horizontalOffset; cell.CellSideDisplayLength = cellSideDisplayLength; } }