private void DrawBorder(BorderDesc border, Graphics g, int x1, int y1, int x2, int y2, int dx, int dy) { Contract.Requires(border != null); Contract.Requires(g != null); if (!WallEditMode) { if (border.IsSecretHiddenBorder) { g.DrawLine(Pens.Red, x1, y1, x2, y2); x1 += dx; x2 += dx; y1 += dy; y2 += dy; } if (border.IsSecretRevealedBorder) { g.DrawLine(Pens.Green, x1, y1, x2, y2); x1 += dx; x2 += dx; y1 += dy; y2 += dy; } if (border.IsLightBorder) { g.DrawLine(Pens.Yellow, x1, y1, x2, y2); x1 += dx; x2 += dx; y1 += dy; y2 += dy; } } else { if (border.IsSecretHiddenBorder || border.IsSecretRevealedBorder) { g.DrawLine(Pens.Red, x1, y1, x2, y2); x1 += dx; x2 += dx; y1 += dy; y2 += dy; } } if (border.IsBlocksLOSBorder) { g.DrawLine(Pens.Magenta, x1, y1, x2, y2); x1 += dx; x2 += dx; y1 += dy; y2 += dy; } g.DrawLine(Pens.Black, x1, y1, x2, y2); }
private static BorderDesc CompareTileBorders(Tile current, Tile neighbor = null) { Contract.Requires(current != null); BorderDesc result = new BorderDesc(); if (neighbor == null) { result.IsLightBorder = current.LightLevel >= 5; result.IsSecretHiddenBorder = current.HasSecret && !current.IsRevealed; result.IsSecretRevealedBorder = current.HasSecret && current.IsRevealed; } else { result.IsLightBorder = current.LightLevel >= 5 && neighbor.LightLevel < 5; result.IsSecretHiddenBorder = (current.HasSecret && !current.IsRevealed) && (!neighbor.HasSecret || neighbor.IsRevealed); result.IsSecretRevealedBorder = (current.HasSecret && current.IsRevealed) && (!neighbor.HasSecret || !neighbor.IsRevealed); result.IsBlocksLOSBorder = current.NoLOSBetweenTiles.Contains(neighbor); } return result; }