Пример #1
0
        Image GetVoidCapImage(VoidCornerKind startCap)
        {
            switch (startCap)
            {
            case VoidCornerKind.None:
                return(null);

            case VoidCornerKind.InsideTopLeft:
                return(insideCornerVoidTopLeft);

            case VoidCornerKind.InsideTopRight:
                return(insideCornerVoidTopRight);

            case VoidCornerKind.InsideBottomLeft:
                return(insideCornerVoidBottomLeft);

            case VoidCornerKind.InsideBottomRight:
                return(insideCornerVoidBottomRight);

            case VoidCornerKind.OutsideTopLeft:
                return(outsideCornerVoidTopLeft);

            case VoidCornerKind.OutsideTopRight:
                return(outsideCornerVoidTopRight);

            case VoidCornerKind.OutsideBottomLeft:
                return(outsideCornerVoidBottomLeft);

            case VoidCornerKind.OutsideBottomRight:
                return(outsideCornerVoidBottomRight);
            }
            return(null);
        }
Пример #2
0
        void DrawInnerVoid(Map map, WallData wallData, Layer voidLayer)
        {
            VoidCornerKind startVoidKind = map.GetVoidKind(wallData.StartColumn, wallData.StartRow);
            VoidCornerKind endVoidKind   = map.GetVoidKind(wallData.EndColumn, wallData.EndRow);

            if (wallData.Orientation == WallOrientation.Vertical)
            {
                Image voidImage = null;
                if (map.VoidIsLeft(wallData.StartColumn, wallData.StartRow))
                {
                    voidImage = verticalVoidRight;
                }
                else if (map.VoidIsRight(wallData.StartColumn, wallData.StartRow))
                {
                    voidImage = verticalVoidLeft;
                }
                if (voidImage != null)
                {
                    DrawVerticalWall(wallData, voidLayer, voidImage);
                }
                if (IsTVoid(startVoidKind))
                {
                    DrawVoidCap(wallData.StartColumn, wallData.StartRow, startVoidKind, voidLayer);
                }
                if (IsTVoid(endVoidKind))
                {
                    DrawVoidCap(wallData.EndColumn, wallData.EndRow, endVoidKind, voidLayer);
                }
            }
            else
            {
                Image voidImage = null;
                if (map.VoidIsAbove(wallData.StartColumn, wallData.StartRow))
                {
                    voidImage = horizontalVoidBottom;
                }
                else if (map.VoidIsBelow(wallData.StartColumn, wallData.StartRow))
                {
                    voidImage = horizontalVoidTop;
                }
                if (voidImage != null)
                {
                    DrawHorizontalWall(wallData, voidLayer, voidImage, 1);
                }

                if (startVoidKind != VoidCornerKind.None)
                {
                    DrawVoidCap(wallData.StartColumn, wallData.StartRow, startVoidKind, voidLayer);
                }

                if (endVoidKind != VoidCornerKind.None)
                {
                    DrawVoidCap(wallData.EndColumn, wallData.EndRow, endVoidKind, voidLayer);
                }
            }
        }
Пример #3
0
 bool IsTVoid(VoidCornerKind voidKind)
 {
     switch (voidKind)
     {
     case VoidCornerKind.TLeft:
     case VoidCornerKind.TTop:
     case VoidCornerKind.TRight:
     case VoidCornerKind.TBottom:
         return(true);
     }
     return(false);
 }
Пример #4
0
        void DrawVoidCap(int column, int row, VoidCornerKind voidKind, Layer voidLayer)
        {
            if (alreadyDrewVoidCap[column + 1, row + 1])
            {
                return;
            }

            Image voidCapImage = null;

            switch (voidKind)
            {
            case VoidCornerKind.TLeft:
                voidCapImage = verticalVoidRight;
                break;

            case VoidCornerKind.TTop:
                voidCapImage = horizontalVoidBottom;
                break;

            case VoidCornerKind.TRight:
                voidCapImage = verticalVoidLeft;
                break;

            case VoidCornerKind.TBottom:
                voidCapImage = horizontalVoidTop;
                //DrawHorizontalWall()
                break;
            }
            if (voidCapImage != null)               // It's a T
            {
                double x = GetWallImageStartX(column, voidCapImage);
                double y = GetWallImageStartY(row, voidCapImage);
                voidLayer.BlendImage(voidCapImage, x, y);
            }
            else
            {
                voidCapImage = GetVoidCapImage(voidKind);
                if (voidCapImage == null)
                {
                    return;
                }

                DrawCap(column, row, voidLayer, voidCapImage);
            }
            alreadyDrewVoidCap[column + 1, row + 1] = true;
        }