public void Connect(VGArea mAreaStart, VGArea mAreaEnd)
{
int mStartCX = mAreaStart.XStart + mAreaStart.Width/2;
int mStartCY = mAreaStart.YStart + mAreaStart.Height/2;
int mEndCX = mAreaEnd.XStart + mAreaEnd.Width/2;
int mEndCY = mAreaEnd.YStart + mAreaEnd.Height/2;
if (Math.Abs(mEndCX - mStartCX) < Math.Abs(mEndCY - mStartCY))
{
if (mStartCX > mEndCX && mStartCY == mEndCY)
{
mStartCX -= mAreaStart.Width/2;
mEndCX += mAreaEnd.Width/2;
}
if (mStartCX < mEndCX && mStartCY == mEndCY)
{
mStartCX += mAreaStart.Width/2;
mEndCX -= mAreaEnd.Width/2;
}
}
else
{
if (mStartCY > mEndCY && mStartCX == mEndCX)
{
mStartCY -= mAreaStart.Height/2;
mEndCY += mAreaEnd.Height/2;
}
if (mStartCY < mEndCY && mStartCX == mEndCX)
{
mStartCY += mAreaStart.Height/2;
mEndCY -= mAreaEnd.Height/2;
}
}
int currentX = mStartCX;
int currentY = mStartCY;
mAreaStart.World.WorldArea[currentX, currentY].Set(ValuePath);
if (Math.Abs(mEndCX - mStartCX) < Math.Abs(mEndCY - mStartCY))
{
while (currentX != mEndCX)
{
if (currentX > mEndCX) currentX--;
else currentX++;
mAreaStart.World.WorldArea[currentX, currentY].Set(ValuePath);
}
while (currentY != mEndCY)
{
if (currentY > mEndCY) currentY--;
else currentY++;
mAreaStart.World.WorldArea[currentX, currentY].Set(ValuePath);
}
}
else
{
while (currentY != mEndCY)
{
if (currentY > mEndCY) currentY--;
else currentY++;
mAreaStart.World.WorldArea[currentX, currentY].Set(ValuePath);
}
while (currentX != mEndCX)
{
if (currentX > mEndCX) currentX--;
else currentX++;
mAreaStart.World.WorldArea[currentX, currentY].Set(ValuePath);
}
}
}