Пример #1
0
        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");
        }
Пример #2
0
        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);
        }
Пример #3
0
        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));
        }
Пример #4
0
        public void TeleportTo(Point2D target)
        {
            Vector moveBy = target.Add(pos.Multiply(-1));

            Move(moveBy);
            pos = target;
        }
Пример #5
0
 public override void OnMouseMove(MouseMoveEvent e)
 {
     if (dragging)
     {
         Position  = dragCameraOffset.Add(dragPosition.Sub(e.Position));
         e.Handled = true;
     }
 }
Пример #6
0
        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));
        }
Пример #7
0
        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));
        }
Пример #8
0
        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);
        }
Пример #9
0
    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);
    }
Пример #10
0
        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));
        }
Пример #11
0
 public void Translate(int x, int y)
 {
     offset = offset.Add(x, y);
 }