public static bool IntersectRect(Rectangle r1, Rectangle r2)
 {
     return !( r2.X > r1.X + r1.Width ||
               r2.X + 0 < r1.X ||
               r2.Y > r1.Y + r1.Height ||
               r2.Y + 0 < r1.Y );
 }
 public static bool IntersectsRect(Rectangle r, Point p)
 {
     return r.X < p.X && r.X + r.Width > p.X && r.Y < p.Y && r.Y + r.Height > p.Y;
 }
Exemplo n.º 3
0
        public void Replace(Rectangle from, Point to)
        {
            for (int y = from.Height; y >= 0; y--)
            {
                int curY = y;
                Window.SetTimeout(
                    () =>
                    {
                        for (int x = 0; x < from.Width; x++)
                        {
                            var toChunkX = (to.X + x) / 8;
                            var toChunkY = (to.Y + curY) / 8;

                            var tochunk = SonicLevel.GetChunkAt(toChunkX, toChunkY);
                            tochunk.ClearCache();
                            var totp = tochunk.TilePieces[(to.X + x) - toChunkX * 8][(to.Y + curY) - toChunkY * 8];
                            tochunk.IsOnlyBackground = null;
                            tochunk.IsOnlyForeground = null;

                            var fromChunkX = (from.X + x) / 8;
                            var fromChunkY = (from.Y + curY) / 8;

                            var fromchunk = SonicLevel.GetChunkAt(fromChunkX, fromChunkY);
                            fromchunk.ClearCache();
                            fromchunk.IsOnlyBackground = null;
                            fromchunk.IsOnlyForeground = null;
                            var fromtp = fromchunk.TilePieces[(from.X + x) - fromChunkX * 8][(from.Y + curY) - fromChunkY * 8];

                            tochunk.TilePieces[(to.X + x) - toChunkX * 8][(to.Y + curY) - toChunkY * 8] = fromtp;
                            fromchunk.TilePieces[(from.X + x) - fromChunkX * 8][(from.Y + curY) - fromChunkY * 8] = totp;

                        }


                    },
                    (from.Height - y) * 50
               );
            }
        }
Exemplo n.º 4
0
        public bool MouseOver(Pointer e)
        {
            var x = 0;
            var y = 0;
            var w = Element.Width;
            var h = Element.Height;

            Document.Body.Style.Cursor = "move";
            if (Dragging) {
/*
                if (this.Element.ChildrenAreEditing())
                {
                    return false;
                }
*/
                var jx = e.X - dragg.X;
                var jy = e.Y - dragg.Y;
                Element.X += jx;
                Element.Y += jy;

                /*   window.DEBUGLABELS[0] = "E: " + e.X + " " + e.Y;
                   window.DEBUGLABELS[1] = "Dragg: " + this.dragg.X + " " + this.dragg.Y;
                   window.DEBUGLABELS[2] = "Element: " + this.Element.X + " " + this.Element.Y;
                   window.DEBUGLABELS[3] = "Offset: " + jx + " " + jy;*/
                //this.dragg.x += jx;
                //this.dragg.y += jy;

                return false;
            }
            foreach (var j in points) {
                var sz = j.Size * 5;

                if (j.Editing) {
                    Document.Body.Style.Cursor = j.Cursor;
                    var dv = new Point(StartDragging.X - e.X, StartDragging.Y - e.Y);

                    j.Click(dv);
                    StartDragging = new Point(e.X + dv.X, e.Y + dv.Y);
                    return true;
                }

                var rect = new Rectangle(x + ( w * j.X / 100 ) - sz / 2, y + ( h * j.Y / 100 ) - sz / 2, sz, sz);

                if (e.X > rect.X && e.X < rect.X + rect.Width && e.Y > rect.Y && e.Y < rect.Y + rect.Height) {
                    Document.Body.Style.Cursor = j.Cursor;

                    if (j.Editing) {
                        var dv = new Point(StartDragging.X - e.X, StartDragging.Y - e.Y);

                        j.Click(dv);
                        StartDragging = new Point(e.X + dv.X, e.Y + dv.Y);
                    }
                    return true;
                }
            }

            StartDragging = new Point(e.X, e.Y);
            return Editing;
        }
Exemplo n.º 5
0
        public bool Click(Pointer e)
        {
            var x = 0;
            var y = 0;
            var w = Element.Width;
            var h = Element.Height;

            //uiManager.propertyList.populate(this.Element);

            foreach (var j in points) {
                j.Editing = false;
            }

            foreach (var j in points) {
                var sz = j.Size * 5;

                var rect = new Rectangle(x + ( w * j.X / 100 ) - sz / 2, y + ( h * j.Y / 100 ) - sz / 2, sz, sz);

                if (e.X > rect.X && e.X < rect.X + rect.Width && e.Y > rect.Y && e.Y < rect.Y + rect.Height) {
                    Document.Body.Style.Cursor = j.Cursor;
                    StartDragging = new Point(e.X, e.Y);
                    Editing = true;
                    j.Editing = true;
                    return true;
                }
            }

            if (e.X > x && e.X < x + w && e.Y > y && e.Y < y + h) {
                dragg = new Point(e.X, e.Y);
                Document.Body.Style.Cursor = "move";
                Dragging = true;
                return false;
            } else
                Document.Body.Style.Cursor = "default";
            return false;
        }
Exemplo n.º 6
0
        /*    
    obtainedRing = [];   
*/

        public Sonic()
        {
            Watcher = new Watcher();

            physicsVariables = SonicConstants.Sonic();

            var sonicManager = SonicManager.Instance;
            sonicLevel = sonicManager.SonicLevel;
            X = sonicLevel.StartPositions[0].X;
            Y = sonicLevel.StartPositions[0].Y;
            SensorManager = new SensorManager();
            HaltSmoke = new List<Point>();
            Rings = 7;
            SensorManager.CreateVerticalSensor("a", -9, 0, 36, "#F202F2");
            SensorManager.CreateVerticalSensor("b", 9, 0, 36, "#02C2F2");
            SensorManager.CreateVerticalSensor("c", -9, 0, -20, "#2D2C21");
            SensorManager.CreateVerticalSensor("d", 9, 0, -20, "#C24222");
            SensorManager.CreateHorizontalSensor("m1", 4, 0, -12, "#212C2E");
            SensorManager.CreateHorizontalSensor("m2", 4, 0, 13, "#22Ffc1");

            SpriteState = "normal";
            myRec = new Rectangle(0, 0, 0, 0);
            sonicLastHitTick = int.MinValue;

        }