Пример #1
0
    /// <summary>
    ///
    /// </summary>
    /// <param name="rc">一共有几行几列</param>
    /// <param name="r">要生成的是哪个图块</param>
    /// <param name="c">要生成的是哪个图块</param>
    /// <param name="r2">相邻的是哪个图块</param>
    /// <param name="c2">相邻的是哪个图块</param>
    /// <param name="rc2idx">(r2,c2)与(r,c)相邻时,(r2,c2)边的索引,上右下左分别用0123代替</param>
    /// <returns></returns>
    char getmode(int rc, int r, int c, int r2, int c2, int rc2idx)
    {
        if (r2 < 0 || r2 >= rc)
        {
            return('f');
        }
        if (c2 < 0 || c2 >= rc)
        {
            return('f');
        }

        int rc2 = r2 * rc + c2;

        string candy = m_jigtiles[rc2].GetMask();

        //如果相邻的图块还没设置过边界,就给(r,c)随机设置一个边界
        //如果相邻的图块已经设置了边界,就给(r,c)设置成相反的
        if (string.IsNullOrEmpty(candy))
        {
            return(JigtileMaskMode.random());
        }
        else
        {
            char mode = candy[rc2idx];
            mode = JigtileMaskMode.reverse(mode);
            return(mode);
        }
    }
Пример #2
0
    //mode可能是被旋转过的,用format可以得到存储了图片的mode
    static public string format(string mode)
    {
        HashSet <string> candy = new HashSet <string>();

        candy.Add("aaaa");
        candy.Add("aaaf");
        candy.Add("faaf");
        candy.Add("ffva");
        candy.Add("vaaa");
        candy.Add("vafa");
        candy.Add("vava");
        candy.Add("vfaa");
        candy.Add("vfav");
        candy.Add("vffa");
        candy.Add("vfva");
        candy.Add("vvaa");
        candy.Add("vvav");
        candy.Add("vvfa");
        candy.Add("vvff");
        candy.Add("vvva");
        candy.Add("vvvf");
        candy.Add("vvvv");

        for (int i = 0; i < 4; ++i)
        {
            if (candy.Contains(mode))
            {
                return(mode);
            }
            else
            {
                // Debug.Log("format");
                mode = JigtileMaskMode.deform(mode);
            }
        }

        // print(string.Format("Can not found:{0}", mode));
        jt.log("can not find ", mode);
        Debug.Assert(false);

        return(null);
    }
Пример #3
0
    //设置使用哪张碰撞掩码图,用vfa代表,上右下左4个字符
    public void SetMask(string maskmode)
    {
        m_mode = maskmode;

        //如果有旋转的情况,需要通过旋转掩码图片得到正确的掩码形状
        for (int i = 0; i < 4; ++i)
        {
            string file = string.Format("sds-{0}", maskmode);
            this.mask.sprite = Resources.Load <Sprite>(file);

            if (this.mask.sprite)
            {
                this.mask.transform.Rotate(Vector3.forward * 90 * i);
                this.jigimg.transform.Rotate(-Vector3.forward * 90 * i);
                break;
            }
            else
            {
                maskmode = JigtileMaskMode.deform(maskmode);
            }
        }

        Debug.Assert(this.mask.sprite, string.Format("找不到sds-{0}", maskmode));
    }