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; }
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 ); } }
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; }
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; }
/* 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; }