private static Point2D GetNextVertex(IBitmap bitmap, Point2D current, Point2D last) { int offset = 0; Point2D point; for (int index = 0; index < bitmapPoints.Length; ++index) { Point2D.Add(ref current, ref bitmapPoints[index], out point); if (Point2D.Equals(ref point, ref last)) { offset = index + 1; break; } } for (int index = 0; index < bitmapPoints.Length; ++index) { Point2D.Add( ref current, ref bitmapPoints[(index + offset) % bitmapPoints.Length], out point); if (point.X >= 0 && point.X < bitmap.Width && point.Y >= 0 && point.Y < bitmap.Height && bitmap[point.X, point.Y]) { return(point); } } throw new ArgumentException("TODO", "bitmap"); }
private HPoint[] GetOutlinedRect(HPoint p1, HPoint p2, int outline) { /* p1 * +--+--+ * \ \ \ * \ \ \ * +--+--+ * p2 p2+len * */ if (p1 == p2) { return(new[] { p1, p1, p1, p1 }); } var pt1 = new Point2D(p1.X, p1.Y); var pt2 = new Point2D(p2.X, p2.Y); var vector = Vector2D.FromPoints(pt2, pt1); var points = new[] { new Point2D(-outline, 0), new Point2D(0, outline), new Point2D(vector.Length, outline), new Point2D(vector.Length + outline, 0), new Point2D(vector.Length, -outline), new Point2D(0, -outline), new Point2D(-outline, 0), }; var rotated = points.Select(pt => pt1.Add(pt.Rotate(vector.Angle))).Select(pt => new HPoint((int)pt.X, (int)pt.Y)).ToArray(); return(rotated); }
protected override void OnDraw(DrawingContext dc) { int i = (10000 - Value) * fg.Height / 10000; dc.Draw(bg, bgOffset); dc.Draw(fg.Slice(0, i, fg.Width, fg.Height - i), fgOffset.Add(0, i)); }
public void TeleportTo(Point2D target) { Vector moveBy = target.Add(pos.Multiply(-1)); Move(moveBy); pos = target; }
public override void OnMouseMove(MouseMoveEvent e) { if (dragging) { Position = dragCameraOffset.Add(dragPosition.Sub(e.Position)); e.Handled = true; } }
public override Component CreateFromReference(JObject emitterObj, IHandlesEntities entHandler, BoundaryStrategy boundaryStrat, Team team, Point2D parentPos, float mod = 1) { Point2D offsetPos = emitterObj["pos"].ToObject <Point2D>().Multiply(10); offsetPos = offsetPos.Add(parentPos); return(base.CreateFromReference(emitterObj, entHandler, boundaryStrat, team, offsetPos)); }
public override Component CreateFromReference(JObject toolObj, IHandlesEntities entHandler, BoundaryStrategy boundaryStrat, Team team, Point2D parentPos, float mod = 1) { string path = SwinGame.AppPath() + toolObj.Value <string>("path"); Point2D offsetPos = toolObj["pos"].ToObject <Point2D>().Multiply(10); offsetPos = offsetPos.Add(parentPos); return(base.CreateFromReference(toolObj, entHandler, boundaryStrat, team, offsetPos)); }
public void Draw(DrawingContext dc, int x, int y) { var p = offset.Add(x - 3, y - 8 - Fonts.Text.Height); var w = Math.Max(text.TextWidth + Padding * 2, 10); var h = Fonts.Text.Height + Padding * 2; dc.Draw(bubble, p.X, p.Y, w, h + 2); dc.Draw(text, p.X + Padding, p.Y + Padding); }
public Point2D Next(float deltaTime) { mPrePosition.Set(mPoint); float x = 0.0f; float y = 0.0f; float baseX = mBaseXVal * deltaTime; //momentum if (mMomentum > 0.0f) { mMomentum -= mMomentum * deltaTime; } baseX += baseX * mMomentum; if (mGradient.mGradient < 0) { x += baseX * -1; } else { x += baseX; } if (mGradient.mUP_DOWN) { y += baseX * Math.Abs(mGradient.mGradient); } else { y -= baseX * Math.Abs(mGradient.mGradient); } mPoint.Add(x, y); if (mPoint.GetX() < mMinPosition.GetX()) { mPoint.SetX(mMinPosition.GetX() + (mSize.GetX() * 0.5f)); } if (mPoint.GetX() > mMaxPosition.GetX()) { mPoint.SetX(mMaxPosition.GetX() - (mSize.GetX() * 0.5f)); } if (mPoint.GetY() < mMinPosition.GetY()) { mPoint.SetY(mMinPosition.GetY() + (mSize.GetY() * 0.5f)); } if (mPoint.GetY() > mMaxPosition.GetY()) { mPoint.SetY(mMaxPosition.GetY() - (mSize.GetY() * 0.5f)); } return(mPoint); }
public NumberPopup Create(Point2D pos, int points) { Point2D offset = SwinGame.PointAt(Util.Rand(30) - 15, Util.Rand(30) - 15); pos = pos.Add(offset); List <Color> colors = new List <Color>() { Color.Yellow }; float vel = Util.Rand(1000, 3000) / 1000f; float x = Util.Rand(500, 2000) / 8000f; Vector dir = SwinGame.VectorTo(x, -1); float lifetime = 1; BoundaryStrategy boundaryStrat = new DieBoundaryBehaviour(playArea); return(new NumberPopup(points.ToString(), points, pos, colors, vel, dir, lifetime, boundaryStrat, Team.None, true)); }
public void Translate(int x, int y) { offset = offset.Add(x, y); }