Пример #1
0
    /** 读取字节流(简版) */
    protected override void toReadBytesSimple(BytesReadStream stream)
    {
        base.toReadBytesSimple(stream);

        id = stream.readInt();

        if (CommonSetting.clientMapNeedGrid)
        {
            grid = new GridMapInfoConfig();
            grid.readBytesSimple(stream);
        }
    }
Пример #2
0
    public override void init()
    {
        base.init();

        _wallRoot = GameObject.Find("wall");

        _wall1Rid = LoadControl.getResourceIDByName(GGlobal.source_wall1);
        _wall2Rid = LoadControl.getResourceIDByName(GGlobal.source_wall2);

        //场景显示构造

        _gridConfig = _scene.getMapInfoConfig().grid;

        makeWall();
    }
Пример #3
0
    private void makeWall()
    {
        _gridConfig = _scene.getMapInfoConfig().grid;

        int width  = _gridConfig.width;
        int height = _gridConfig.width;

        byte[] mainGrids = _gridConfig.mainGrids;

        IntSet usedSet = new IntSet();

        for (int i = 0; i < width; i++)
        {
            for (int j = 0; j < height; j++)
            {
                int gridIndex = _gridConfig.getGridIndex(i, j);

                //未使用
                if (!usedSet.contains(gridIndex))
                {
                    int v = mainGrids[gridIndex];

                    if (v == GMapBlockType.Wall)
                    {
                        int rx = i;
                        int nx = rx;

                        while (true)
                        {
                            nx++;

                            if (nx < width && _gridConfig.getGrid(nx, j) == GMapBlockType.Wall)
                            {
                                //继续
                                rx = nx;
                            }
                            else
                            {
                                break;
                            }
                        }

                        //横排有
                        if (rx != i)
                        {
                            for (int k = i; k <= rx; k++)
                            {
                                usedSet.add(_gridConfig.getGridIndex(k, j));
                            }

                            makeOne(i, j, rx - i, true);
                            continue;
                        }

                        int ry = j;
                        int ny = ry;

                        while (true)
                        {
                            ny++;

                            if (ny < height && _gridConfig.getGrid(i, ny) == GMapBlockType.Wall)
                            {
                                //继续
                                ry = ny;
                            }
                            else
                            {
                                break;
                            }
                        }

                        //竖排有
                        if (ry != j)
                        {
                            for (int k = j; k <= ry; k++)
                            {
                                usedSet.add(_gridConfig.getGridIndex(i, k));
                            }

                            makeOne(i, j, ry - j, false);
                            continue;
                        }


                        usedSet.add(gridIndex);
                        makeOne(i, j, 1, MathUtils.randomBoolean());
                    }
                }
            }
        }
    }