public void MoveFigureDown()
{
// Sorting blocks fro dynamic figure to correct moving
SortingVector2(ref DynamicFigure, false, DynamicFigure.GetLowerBound(0),
DynamicFigure.GetUpperBound(0));
// Check colisions
for (int i = 0; i < BlocksCountInFigure; i++)
{
if ((DynamicFigure[i].Y == height - 1))
{
for (int k = 0; k < BlocksCountInFigure; k++)
boardFields[(int)DynamicFigure[k].X, (int)DynamicFigure[k].Y] = FieldState.Static;
showNewBlock = true;
return;
}
if (boardFields[(int)DynamicFigure[i].X, (int)DynamicFigure[i].Y + 1] == FieldState.Static)
{
for (int k = 0; k < BlocksCountInFigure; k++)
boardFields[(int)DynamicFigure[k].X, (int)DynamicFigure[k].Y] = FieldState.Static;
showNewBlock = true;
return;
}
}
// Move figure on board
for (int i = BlocksCountInFigure - 1; i >= 0; i--)
{
boardFields[(int)DynamicFigure[i].X, (int)DynamicFigure[i].Y + 1] =
boardFields[(int)DynamicFigure[i].X, (int)DynamicFigure[i].Y];
BoardColor[(int)DynamicFigure[i].X, (int)DynamicFigure[i].Y + 1] =
BoardColor[(int)DynamicFigure[i].X, (int)DynamicFigure[i].Y];
ClearBoardField((int)DynamicFigure[i].X, (int)DynamicFigure[i].Y);
// Change position for blocks in DynamicFigure
DynamicFigure[i].Y = DynamicFigure[i].Y + 1;
}
// Change position vector
//if (PositionForDynamicFigure.Y < height - 1)
PositionForDynamicFigure.Y++;
}