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);
            }
        }
Exemplo n.º 3
0
        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);
        }