Пример #1
0
        public void OpenGameVersion()
        {
            string path = AppUtil.DataPath + this.m_remote_version_file;

            this.m_remote_version.Clear();
            Sqlite3tool.OpenCyMzq(path, ref this.m_remote_version);
        }
Пример #2
0
        public void CloseGameDataBase()
        {
            bool flag = this.m_main_sqlite != null;

            if (flag)
            {
                this.m_main_sqlite.CloseDb();
                this.m_main_sqlite = null;
            }
        }
Пример #3
0
        public void InitSqlite(bool update_version)
        {
            string          res_work_path = AppUtil.DataPath;                    // c:/luaframework/
            string          http_str      = m_http_path + m_remote_version_file; //http://192.168.7.223/patchs/xxx_head.cymzq
            RuntimePlatform platform      = Application.platform;

            if (platform == RuntimePlatform.IPhonePlayer)
            {
                http_str = http_str.Replace("patchs", "patchsIos");
            }
            else if (platform == RuntimePlatform.Android)
            {
                http_str = http_str.Replace("patchs", "patchsAndroid");
            }

            string path = res_work_path + m_remote_version_file;//c:/luaframework/patchs/xxx_head.cymzq

            m_main_sqlite = new Sqlite3tool();
            string real_db_path = res_work_path + m_real_db_file;//c:/luaframework/patchs/xxx_main.sydb

            if (m_main_sqlite.OpenOrCreateDb(real_db_path))
            {
                Debug.Log("SqliteFilePack@InitSqlite: OpenOrCreateDb succeed");
                if (update_version)
                {
                    MemoryLoadCallbackFunc delay_func = delegate(bool is_suc, byte[] buffer)
                    {
                        if (is_suc)
                        {
                            Util.Log("PackResult.Success");
                            Pathtool.DeleteToFile(path);
                            bool flag2 = Pathtool.SaveDataToFile(path, buffer);
                            if (flag2)
                            {
                                Sqlite3tool.OpenCyMzq(path, ref this.m_remote_version);
                                this.m_result = PackResult.Success;
                                LogMgr.Log("OpenCyMzq {0}", path);
                            }
                        }
                        else
                        {
                            LogMgr.Log("PackResult.Faild");
                            this.m_result = PackResult.Faild;
                            LogMgr.LogError(string.Format("init sqlite error {0}", path));
                        }
                    };
                    MemoryQuest memory_quest = new MemoryQuest();
                    memory_quest.RelativePath = http_str + "?v=" + Util.GetTimeStamp();
                    LogMgr.Log("download file:{0}", memory_quest.RelativePath);
                    ResRequest.Instance.RequestMemoryAsync(memory_quest, delay_func);
                }
                else
                {
                    Sqlite3tool.OpenCyMzq(path, ref this.m_remote_version);
                    m_result = PackResult.Success;
                    Debug.Log("OpenCyMzq " + path);
                }
            }
            else
            {
                m_main_sqlite.CloseDb();
                Debug.Log("OpenOrCreateDb error");
            }
        }
Пример #4
0
    private static void ExportCyMzq(string file_name)
    {
        string _name = Path.GetFileNameWithoutExtension(file_name);
        string _dir  = Path.GetDirectoryName(file_name);
        string _file = string.Format("{0}/{1}.txt", _dir, _name);

        if (File.Exists(_file))
        {
            return;
        }
        StringBuilder log_sb = new StringBuilder();

        FileStream   fs         = new FileStream(file_name, FileMode.Open);
        int          nLength    = (int)fs.Length;
        BinaryReader tmp_reader = new BinaryReader(fs);
        int          unzip      = tmp_reader.ReadInt32();

        log_sb.Append("unzip = " + unzip + "\n");
        if (unzip != 0)
        {
            int md5_data_size     = 4;
            int version_data_size = 4;
            int len_data_size     = 4;

            byte[] buffs       = tmp_reader.ReadBytes(nLength - 4);
            int    len         = 0;
            byte[] DecompBuffs = Sqlite3tool.DecompNetBuffer(buffs, nLength, unzip, out len);
            if (unzip != len)
            {
                LogMgr.LogError("error: unzip != len");
            }
            MemoryStream decomp_ms     = new MemoryStream(DecompBuffs);
            BinaryReader decomp_reader = new BinaryReader(decomp_ms);

            int    file_path_count = decomp_reader.ReadInt32();
            int    file_count      = decomp_reader.ReadInt32();
            byte[] file_path_byte  = decomp_reader.ReadBytes(file_path_count);
            byte[] md5_code_byte   = decomp_reader.ReadBytes(file_count * md5_data_size);
            byte[] version_byte    = decomp_reader.ReadBytes(file_count * version_data_size);
            byte[] len_byte        = decomp_reader.ReadBytes(file_count * len_data_size);

            MemoryStream md5_code_mem = new MemoryStream(md5_code_byte);
            BinaryReader md5_code_all = new BinaryReader(md5_code_mem);
            MemoryStream version_mem  = new MemoryStream(version_byte);
            BinaryReader version_all  = new BinaryReader(version_mem);
            MemoryStream len_mem      = new MemoryStream(len_byte);
            BinaryReader len_all      = new BinaryReader(len_mem);

            int file_path_begin_pos = 0;
            for (int index = 0; index < file_count; index++)
            {
                string        file_path = "";
                byte[]        md5       = md5_code_all.ReadBytes(4);
                StringBuilder sb        = new StringBuilder();
                for (int i = 0; i < md5.Length; i++)
                {
                    sb.Append(md5[i].ToString("X2"));
                }

                int version = version_all.ReadInt32();
                int length  = len_all.ReadInt32();
                int end_pos = 0;
                Sqlite3tool.ParseFilePath(ref file_path_byte, file_path_begin_pos, file_path_count, out end_pos, out file_path);
                file_path_begin_pos = end_pos;

                PathHashInfo _hash = DataEncrypt.GetPathHashInfo(file_path);
                log_sb.Append("hash0: ");
                log_sb.Append(_hash.hash0);
                log_sb.Append(", ");
                log_sb.Append("hash1: ");
                log_sb.Append(_hash.hash1);
                log_sb.Append(", ");
                log_sb.Append("hash2: ");
                log_sb.Append(_hash.hash1);
                log_sb.Append(", ");
                log_sb.Append("version: ");
                log_sb.Append(version);
                log_sb.Append(", ");
                log_sb.Append("file_name: ");
                log_sb.Append(Util.GetAssetsBundlePathFromBase64(file_path));
                log_sb.Append(", ");
                log_sb.Append("file_mds: ");
                log_sb.Append(sb.ToString());
                log_sb.Append(", ");
                log_sb.Append("data_len: ");
                log_sb.Append(length);
                log_sb.Append(", ");
                log_sb.Append("unzip_len: ");
                log_sb.Append(length);
                log_sb.Append("\n");
            }
            fs.Close();
            fs.Dispose();
        }

        System.IO.File.WriteAllText(_file, log_sb.ToString());
        log_sb.Clear();
    }
Пример #5
0
    public static bool OpenCyMzq(string file_name, ref Dictionary <string, DbFileInfo> map)
    {
        FileStream   fs         = new FileStream(file_name, FileMode.Open);
        int          nLength    = (int)fs.Length;
        BinaryReader tmp_reader = new BinaryReader(fs);
        int          unzip      = tmp_reader.ReadInt32();

        bool result;

        if (unzip == 0)
        {
            result = false;
        }
        else
        {
            int md5_data_size     = 4;
            int version_data_size = 4;
            int len_data_size     = 4;

            byte[] buffs       = tmp_reader.ReadBytes(nLength - 4);
            int    len         = 0;
            byte[] DecompBuffs = Sqlite3tool.DecompNetBuffer(buffs, nLength, unzip, out len);
            if (unzip != len)
            {
                LogMgr.LogError("error: unzip != len");
            }
            MemoryStream decomp_ms     = new MemoryStream(DecompBuffs);
            BinaryReader decomp_reader = new BinaryReader(decomp_ms);

            int    file_path_count = decomp_reader.ReadInt32();
            int    file_count      = decomp_reader.ReadInt32();
            byte[] file_path_byte  = decomp_reader.ReadBytes(file_path_count);
            byte[] md5_code_byte   = decomp_reader.ReadBytes(file_count * md5_data_size);
            byte[] version_byte    = decomp_reader.ReadBytes(file_count * version_data_size);
            byte[] len_byte        = decomp_reader.ReadBytes(file_count * len_data_size);

            MemoryStream md5_code_mem = new MemoryStream(md5_code_byte);
            BinaryReader md5_code_all = new BinaryReader(md5_code_mem);
            MemoryStream version_mem  = new MemoryStream(version_byte);
            BinaryReader version_all  = new BinaryReader(version_mem);
            MemoryStream len_mem      = new MemoryStream(len_byte);
            BinaryReader len_all      = new BinaryReader(len_mem);

            int file_path_begin_pos = 0;
            for (int index = 0; index < file_count; index++)
            {
                string        file_path = "";
                byte[]        md5       = md5_code_all.ReadBytes(4);
                StringBuilder sb        = new StringBuilder();
                for (int i = 0; i < md5.Length; i++)
                {
                    sb.Append(md5[i].ToString("X2"));
                }

                int version = version_all.ReadInt32();
                int length  = len_all.ReadInt32();
                int end_pos = 0;
                Sqlite3tool.ParseFilePath(ref file_path_byte, file_path_begin_pos, file_path_count, out end_pos, out file_path);
                file_path_begin_pos = end_pos;

                DbFileInfo info = new DbFileInfo();
                info.file_name = file_path;
                info.hash_info = DataEncrypt.GetPathHashInfo(file_path);
                info.version   = version;
                info.data_len  = length;
                info.unzip_len = length;
                info.file_md5  = sb.ToString();
                map.Add(info.file_name, info);
            }
            fs.Close();
            fs.Dispose();
            result = true;
        }
#if  UNITY_EDITOR
        //ExportCyMzq(file_name);
#endif
        return(result);
    }