//**************************************************************************
    //
    // Protected
    //
    //**************************************************************************

    override protected void InitializeFigure()
    {
        FigureCollisionData data;

        //
        data          = new FigureCollisionData();
        data.geometry = new int [, ] {
            { 1, 1, 0 },
            { 0, 1, 1 }
        };

        data.rotationAngle = -90;
        data.xOffset       = -1;
        data.yOffset       = -1;
        collisionData.Add(data);

        //
        data          = new FigureCollisionData();
        data.geometry = new int [, ] {
            { 0, 1 },
            { 1, 1 },
            { 1, 0 }
        };

        data.rotationAngle    = 0;
        data.xOffset          = -1;
        data.yOffset          = 1;
        data.yCollisionOffset = -1;
        collisionData.Add(data);

        GenerateVisualDataByCollisionData(collisionData[0]);
    }
Esempio n. 2
0
    //**************************************************************************
    // Collision

    public bool TestFigureCollision(FigureCollisionData data, int x, int y, out bool isOutUpperBounds)
    {
        isOutUpperBounds = false;
        for (int i = 0; i < data.geometry.GetLength(0); i++)
        {
            for (int j = 0; j < data.geometry.GetLength(1); j++)
            {
                if (data.geometry[i, j] != 0)
                {
                    int realX = x + i + data.xCollisionOffset + data.xOffset;
                    int realY = y + j + data.yCollisionOffset + data.yOffset;

                    if (realY <= 0)
                    {
                        isOutUpperBounds = true;
                    }

                    if (TestPointCollision(realX, realY))
                    {
                        return(true);
                    }
                }
            }
        }

        isOutUpperBounds = false;
        return(false);
    }
    //**************************************************************************
    //
    // Protected
    //
    //**************************************************************************

    override protected void InitializeFigure()
    {
        FigureCollisionData data;

        //
        data          = new FigureCollisionData();
        data.geometry = new int [, ] {
            { 1 }
        };
        collisionData.Add(data);

        //
        GenerateVisualDataByCollisionData(collisionData[0]);
    }
Esempio n. 4
0
    //--------------------------------------------------------------------------

    protected void GenerateVisualDataByCollisionData(FigureCollisionData data)
    {
        for (int i = 0; i < data.geometry.GetLength(0); i++)
        {
            for (int j = 0; j < data.geometry.GetLength(1); j++)
            {
                int value = data.geometry[i, j];
                if (value != 0)
                {
                    CreateBlock(j, -i);
                }
            }
        }
    }
Esempio n. 5
0
    //**************************************************************************
    // Fill

    public void FillFigure(FigureCollisionData data, int x, int y)
    {
        for (int i = 0; i < data.geometry.GetLength(0); i++)
        {
            for (int j = 0; j < data.geometry.GetLength(1); j++)
            {
                if (data.geometry[i, j] != 0)
                {
                    int realX = x + i + data.xCollisionOffset + data.xOffset;
                    int realY = y + j + data.yCollisionOffset + data.yOffset;
                    FillPoint(realX, realY);
                }
            }
        }
    }
Esempio n. 6
0
    //--------------------------------------------------------------------------

    public bool CheckFigureOutUpperBounds(FigureCollisionData data, int x, int y)
    {
        for (int i = 0; i < data.geometry.GetLength(0); i++)
        {
            for (int j = 0; j < data.geometry.GetLength(1); j++)
            {
                if (data.geometry[i, j] != 0)
                {
                    int realY = y + j + data.yCollisionOffset + data.yOffset;
                    if (realY < 0)
                    {
                        return(true);
                    }
                }
            }
        }

        return(false);
    }
    //**************************************************************************
    //
    // Protected
    //
    //**************************************************************************

    override protected void InitializeFigure()
    {
        FigureCollisionData data;

        //
        data          = new FigureCollisionData();
        data.geometry = new int [, ] {
            { 1, 1, 1, 1 }
        };                                                 // Vertical

        data.rotationAngle = -90;
        data.xOffset       = 0;
        data.yOffset       = -3;
        collisionData.Add(data);

        //
        GenerateVisualDataByCollisionData(collisionData[0]);

        ((ShotBlock)blocks[blocks.Count - 1]).isActive = true;
    }
Esempio n. 8
0
    //--------------------------------------------------------------------------

    public bool GetCollisionPoints(FigureCollisionData data, int x, int y, out List <Vector2> collisionPoints)
    {
        collisionPoints = new List <Vector2>();

        for (int i = 0; i < data.geometry.GetLength(0); i++)
        {
            for (int j = 0; j < data.geometry.GetLength(1); j++)
            {
                if (data.geometry[i, j] != 0)
                {
                    int realX = x + i + data.xCollisionOffset + data.xOffset;
                    int realY = y + j + data.yCollisionOffset + data.yOffset;
                    if (TestPointCollision(realX, realY))
                    {
                        collisionPoints.Add(new Vector2(realX, realY));
                    }
                }
            }
        }

        return(collisionPoints.Count > 0);
    }
Esempio n. 9
0
    //--------------------------------------------------------------------------

    virtual protected bool TestCollision(int x, int y, int orientaion, out bool outUpperBounds)
    {
        FigureCollisionData data = collisionData[orientaion];

        return(fieldData.TestFigureCollision(data, x, y, out outUpperBounds));
    }
Esempio n. 10
0
    //--------------------------------------------------------------------------

    protected Vector3 BlockContainerOffset(int orientation)
    {
        FigureCollisionData data = collisionData[currentOrientation];

        return(new Vector3(-data.xOffset, data.yOffset) * TetrisConst.BRICK_SIZE);
    }