示例#1
0
 internal bool isSelected(Vec pos)
 {
     return(mPos.isInside(pos, mSize));
 }
示例#2
0
        internal void paint(Drawer drawer, bool selected)
        {
            Color color = Color.Black;

            if (mPair.mFirst.hasFishka())
            {
                color = mPair.mFirst.getFishka().mPlayer.mColor;
            }

            if (mAlive)
            {
                Pen pen = new Pen(color);
                if (selected)
                {
                    pen = new Pen(color, 3);
                }

                if (!isCycle())
                {
                    Vec delta2 = mVecPair.mSecond - mVecPair.mFirst;
                    Vec vec2   = delta2.norm();
                    Vec p1     = mVecPair.mSecond - vec2 * W + vec2.rotate() * W / 2;
                    Vec p2     = mVecPair.mSecond - vec2 * W - vec2.rotate() * W / 2;

                    drawer.drawLine(pen, mVecPair.mFirst, mVecPair.mSecond);
                    drawer.drawLine(pen, p1, mVecPair.mSecond);
                    drawer.drawLine(pen, p2, mVecPair.mSecond);
                    drawer.drawEllipse(pen, getCenter(), W / 3);
                }
                else
                {
                    drawer.drawEllipse(pen, mVecPair.mFirst, W);
                }
            }
            else
            {
                if (mDeadProc < 1)
                {
                    if (isCycle())
                    {
                        drawer.drawExplose(new Pen(color, 1), mVecPair.mFirst, W / 2, mDeadProc);
                    }
                    else
                    {
                        const int    PART   = 10;
                        const double PART_1 = 1.0 / PART;

                        for (int i = 0; i < PART; i++)
                        {
                            Vec delta2 = mVecPair.mSecond - mVecPair.mFirst;
                            Vec vec2   = delta2.norm();
                            Vec p1     = mVecPair.mFirst + vec2 * W;
                            Vec p2     = mVecPair.mSecond - vec2 * W;

                            double a = i * PART_1 + mDeadProc * PART_1 / 2;
                            double b = (i + 1) * PART_1 - mDeadProc * PART_1 / 2;

                            drawer.drawLine(new Pen(color, 1), p1.interpolate(p2, a), p1.interpolate(p2, b));
                        }
                    }
                }
            }
        }
示例#3
0
 internal Node(int x, int y)
 {
     mFishkaConnect = new Connect <Node, Fishka>(this);
     mPos           = new Vec(x, y);
 }
示例#4
0
 internal bool isSelected(Vec pos)
 {
     return(getCenter().isInside(pos, W));
 }