Exemple #1
0
    /** 写合并项 */
    private void writeMapCombine()
    {
        if (_sceneList == null)
        {
            return;
        }

        Ctrl.print("writeCombine");

        BytesWriteStream stream = new BytesWriteStream();

        IntObjectMap <SceneMapConfig> dic = SceneMapConfig.getDic();

        stream.writeLen(dic.size());

        foreach (int k in dic.getSortedKeyList())
        {
            SceneMapConfig config = dic.get(k);

            stream.writeInt(config.id);

            if (CommonSetting.serverMapNeedGrid || CommonSetting.clientMapNeedGrid)
            {
                string path  = getMapGridFilePath(config.id);
                byte[] bytes = FileUtils.readFileForBytes(path);

                if (bytes != null)
                {
                    stream.writeLen(bytes.Length);
                    stream.writeByteArr(bytes);
                }
                else
                {
                    stream.writeLen(0);
                }

                if (CommonSetting.clientMapNeedGrid)
                {
                    BytesWriteStream clientStream = new BytesWriteStream();
                    BaseC.config.writeConfigVersion(clientStream);
                    clientStream.writeInt(config.id);

                    if (bytes != null)
                    {
                        clientStream.writeLen(bytes.Length);
                        clientStream.writeByteArr(bytes);
                    }
                    else
                    {
                        clientStream.writeLen(0);
                    }

                    byte[] buf = clientStream.getBuf();
                    int    len = clientStream.length();

                    if (CommonSetting.configNeedCompress)
                    {
                        clientStream.compress();
                    }

                    BytesReadStream rs = new BytesReadStream(clientStream.getBuf(), 0, clientStream.length());
                    rs.unCompress();

                    byte[] rBuf = rs.getBuf();
                    int    rLen = rs.length();

                    if (len == rLen)
                    {
                        bool isSame = true;

                        for (int i = 0; i < len; i++)
                        {
                            if (buf[i] != rBuf[i])
                            {
                                isSame = false;
                                break;
                            }
                        }
                    }


                    FileUtils.writeFileForBytesWriteStream(ShineToolGlobal.sourceCommonConfigDirPath + "/mapInfo/" + config.id + ".bin", clientStream);
                }
            }

            if (CommonSetting.serverMapNeedRecast)
            {
                string path = getMapNavFilePath(config.id);

                byte[] bytes = FileUtils.readFileForBytes(path);

                if (bytes != null)
                {
                    stream.writeLen(bytes.Length);
                    stream.writeByteArr(bytes);
                }
                else
                {
                    stream.writeLen(0);
                }
            }
        }

        //写出服务器端配置
        FileUtils.writeFileForBytesWriteStream(ShineToolGlobal.serverSavePath + "/config/mapInfo.bin", stream);

        //调用configExport
        ToolFileUtils.executeServerTool("configExport");
    }