Exemple #1
0
    public void Move(int x, int y, int level = 0)
    {
        LeftTop[curLevel].x = Mathf.Clamp(x - viewX[curLevel], 0, MAP_BLOCK_COUNT_TOTAL_X - 1);
        LeftTop[curLevel].y = Mathf.Clamp(y - viewY2[curLevel], 0, MAP_BLOCK_COUNT_TOTAL_Y - 1);


        BottomRight[curLevel].x = Mathf.Clamp(x + viewX[curLevel], 0, MAP_BLOCK_COUNT_TOTAL_X - 1);
        BottomRight[curLevel].y = Mathf.Clamp(y + viewY[curLevel], 0, MAP_BLOCK_COUNT_TOTAL_Y - 1);

        for (int ry = LeftTopOld.y; ry <= BottomRightOld.y; ++ry)
        {
            for (int rx = LeftTopOld.x; rx <= BottomRightOld.x; ++rx)
            {
                if (!in_view(rx, ry))
                {
                    int block_id = ry * MAP_BLOCK_COUNT_TOTAL_X + rx;
                    ReleaseResource(block_id);
                }
            }
        }

        Debug.LogFormat("LeftTopOld ={0},{1} BottomRightOld = {2},{3}", LeftTopOld.x, LeftTopOld.y, BottomRightOld.x, BottomRightOld.y);
        Debug.LogFormat("LeftTop[curLevel] ={0},{1} BottomRight[curLevel] = {2},{3}", LeftTop[curLevel].x, LeftTop[curLevel].y, BottomRight[curLevel].x, BottomRight[curLevel].y);


        showBlocks = (BottomRight[curLevel].x - LeftTop[curLevel].x) * (BottomRight[curLevel].y - LeftTop[curLevel].y);

        int startX = Mathf.Max(0, x - viewX[curLevel]);
        int startY = Mathf.Max(0, y - viewY2[curLevel]);
        int endX   = Mathf.Min(MAP_BLOCK_COUNT_TOTAL_X - 1, x + viewX[curLevel]);
        int endY   = Mathf.Min(MAP_BLOCK_COUNT_TOTAL_Y - 1, y + viewY[curLevel]);

        for (int i = startY; i <= endY; ++i)
        {
            for (int j = startX; j <= endX; ++j)
            {
                int      block_id = i * MAP_BLOCK_COUNT_TOTAL_X + j;
                MapBlock mb       = blocks[block_id];
                mb.Show(curLevel);
            }
        }

        LeftTopOld.x = LeftTop[curLevel].x;
        LeftTopOld.y = LeftTop[curLevel].y;

        BottomRightOld.x = BottomRight[curLevel].x;
        BottomRightOld.y = BottomRight[curLevel].y;
    }