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); }
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); } } }
bool IsTVoid(VoidCornerKind voidKind) { switch (voidKind) { case VoidCornerKind.TLeft: case VoidCornerKind.TTop: case VoidCornerKind.TRight: case VoidCornerKind.TBottom: return(true); } return(false); }
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; }