예제 #1
0
        /// <summary>
        /// 从方块相邻状态得到贴图
        /// </summary>
        /// <param name="up">上面相邻状态</param>
        /// <param name="down">下面相邻状态</param>
        /// <param name="left">左边相邻状态</param>
        /// <param name="right">右边相邻状态</param>
        /// <returns>贴图编号</returns>
        public void SpriteOut(NearbyState up, NearbyState down, NearbyState left, NearbyState right)
        {
            List <int> outer = new List <int>();
            List <int> upArray = new List <int>(), downArray = new List <int>(), leftArray = new List <int>(), rightArray = new List <int>();

            //对四个方向状态进行判断
            switch (up)
            {
            case NearbyState.DIFID:
                upArray = UpDifId.ToList();
                break;

            case NearbyState.NULL:
                upArray = UpNull.ToList();
                break;

            case NearbyState.SAMEID:
                upArray = UpSameId.ToList();
                break;
            }
            switch (down)
            {
            case NearbyState.DIFID:
                downArray = DownDifId.ToList();
                break;

            case NearbyState.NULL:
                downArray = DownNull.ToList();
                break;

            case NearbyState.SAMEID:
                downArray = DownSameId.ToList();
                break;
            }
            switch (left)
            {
            case NearbyState.DIFID:
                leftArray = LeftDifId.ToList();
                break;

            case NearbyState.NULL:
                leftArray = LeftNull.ToList();
                break;

            case NearbyState.SAMEID:
                leftArray = LeftSameId.ToList();
                break;
            }
            switch (right)
            {
            case NearbyState.DIFID:
                rightArray = RightDifId.ToList();
                break;

            case NearbyState.NULL:
                rightArray = RightNull.ToList();
                break;

            case NearbyState.SAMEID:
                rightArray = RightSameId.ToList();
                break;
            }
            outer = upArray.ToList().Intersect(downArray).Intersect(leftArray).Intersect(rightArray).ToList();
            Debug.Log(outer[0]);
            GetComponent <SpriteRenderer>().sprite = StateSprites[outer[outer.Count - 1]];
        }
예제 #2
0
        /// <summary>
        /// 飞船刷新相邻状态时调用该函数
        /// </summary>
        public void OnRefresh()
        {
            NearbyState up = 0, down = 0, left = 0, right = 0;

            //up
            if (UpBlock == null)
            {
                up = NearbyState.NULL;
            }

            else if (UpBlock.Id == Id)
            {
                up = NearbyState.SAMEID;
            }
            else
            {
                up = NearbyState.DIFID;
            }
            //down
            if (DownBlock == null)
            {
                down = NearbyState.NULL;
            }

            else if (DownBlock.Id == Id)
            {
                down = NearbyState.SAMEID;
            }
            else
            {
                down = NearbyState.DIFID;
            }
            //left
            if (LeftBlock == null)
            {
                left = NearbyState.NULL;
            }

            else if (LeftBlock.Id == Id)
            {
                left = NearbyState.SAMEID;
            }
            else
            {
                left = NearbyState.DIFID;
            }
            //right
            if (RightBlock == null)
            {
                right = NearbyState.NULL;
            }

            else if (RightBlock.Id == Id)
            {
                right = NearbyState.SAMEID;
            }
            else
            {
                right = NearbyState.DIFID;
            }

            if (BlockStateChangeEventInt != null)
            {
                BlockStateChangeEventInt(up, down, left, right);
            }
        }