private void IsoDrawFirewall(IFireWall firewall, DrawingContext drawingContext) { Size size = new Size(this.vh.IsoLenght(), (double)this.vh.IsoLenght() * 110 / 113); Point p = this.vh.DrawPosition(new Point(firewall.X, firewall.Y)); p = new Point(p.X - size.Width + 1, p.Y - size.Height + 1); Rect position = new Rect(p, size); ImageBrush fireWallImage = new ImageBrush { ImageSource = new BitmapImage(new Uri(@"Resources\Firewall\FirewallIcon.png", UriKind.Relative)) }; drawingContext.DrawRectangle(fireWallImage, null, position); }
/// <summary> /// Renders the map and the objects /// </summary> /// <param name="drawingContext">Gets drawing contexts</param> protected override void OnRender(DrawingContext drawingContext) { if (this.gm != null) { this.DrawBackgroundImage(drawingContext); DrawedNetworkControllers.Clear(); this.IsoDrawMap(drawingContext); foreach (var item in this.gm.GameObjects) { if (item is INetworkController nCTemp) { this.IsoDrawCabel(nCTemp, drawingContext); } } foreach (var item in this.gm.GameObjects) { IFireWall fWTemp = item as IFireWall; IInactiveNetworkController iNCTemp = item as IInactiveNetworkController; if (item is IServerNetworkController sNCTemp) { this.IsoDrawNetworkControl(sNCTemp, drawingContext); } else if (fWTemp != null) { this.IsoDrawFirewall(fWTemp, drawingContext); } else if (iNCTemp != null) { this.IsoDrawRouter(iNCTemp, drawingContext); } } this.DrawTimeScore(drawingContext); } }
private bool FireWallDetection(IActiveNetworkController source, INetworkController target, IFireWall fireWall) { Rectangle r = new Rectangle((int)(fireWall.X - (this.TileSize / 2)), (int)(fireWall.Y - (this.TileSize / 2)), this.TileSize, this.TileSize); Vector sourcev = new Vector(source.X, source.Y); Vector targetv = new Vector(target.X, target.Y); Vector firewallv1 = new Vector(r.X, r.Y); Vector firewallv2 = new Vector(r.X + r.Width, r.Y + r.Height); Vector firewallv3 = new Vector(r.X + r.Width, r.Y); Vector firewallv4 = new Vector(r.X, r.Y + r.Height); Vector outv = new Vector(); var hit1 = LineSegment.LineSegementsIntersect(sourcev, targetv, firewallv1, firewallv2, out outv); var hit2 = LineSegment.LineSegementsIntersect(sourcev, targetv, firewallv3, firewallv4, out outv); return(hit1 || hit2); }