示例#1
0
    public void OnLeft()
    {
        BlockTeam bt = m_CurBlockTeam;

        if (!IsCollide(bt, BT_Move_Type.BTM_Left))
        {
            bt.MoveLeft();
        }
    }
示例#2
0
    public void OnRot()
    {
        if (m_CurBlockTeam == null)
        {
            return;
        }
        BlockTeam bt = m_CurBlockTeam.Clone();

        bt.Rot();
        if (!IsCollide(bt, BT_Move_Type.BTM_None))
        {
            m_CurBlockTeam.Rot();
        }
        else
        {
            BlockTeam btLeft  = bt;
            BlockTeam btRight = bt.Clone();
            for (int i = 0; i < bt.GetBlockWidth(); i++)
            {
                btLeft.MoveLeft();
                if (!IsCollide(btLeft, BT_Move_Type.BTM_None))
                {
                    m_CurBlockTeam.Rot();
                    for (int j = i; j >= 0; j--)
                    {
                        m_CurBlockTeam.MoveLeft();
                    }
                    break;
                }
                btRight.MoveRight();
                if (!IsCollide(btRight, BT_Move_Type.BTM_None))
                {
                    m_CurBlockTeam.Rot();
                    for (int j = i; j >= 0; j--)
                    {
                        m_CurBlockTeam.MoveRight();
                    }
                    break;
                }
            }
        }
    }