예제 #1
0
        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();
        }
예제 #2
0
        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;
            }
        }